Freeze a per-step approved email on this campaign_lead.
Writes into campaign_leads.metadata.approved_emails[step_index]. The
send-time short-circuit (PR A2) reads this exact blob and skips LangGraph.
Documentation Index
Fetch the complete documentation index at: https://bavlio.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
POST /campaigns/{id}/leads/{lead_id}/approve body.
Step number being approved (1-indexed, matches steps_config).
1 <= x <= 32Variant label being approved; must match the lead's assigned variant for this step.
1 - 10Approved subject line (frozen).
1 - 998Approved body (frozen).
1 - 50000If provided, overrides the resolved prompt hierarchy for this approval.
32000Exact prompt text used to generate the draft. If omitted, server resolves it.
32000LLM model identifier used for the draft (e.g., 'gemini-2.0-flash').
Optional: generation latency for observability.
x >= 0Optional: research-cache source contents used to produce the draft. Hashed into research_cache_fingerprint.
Optional: fingerprint the client computed at draft time. If it differs from the server-computed fingerprint, approval fails with 422 — the step variant/sender/template was swapped after drafting.
Successful Response
POST approve/unapprove/reset response.
All step indices currently approved for this lead after the operation.
One entry in campaign_leads.metadata.approved_emails.