Public — Campaign offer
Recipient-facing campaign-offer review (magic-link token)
Resolve a campaign-offer token into the context needed to render the review screen
Public endpoint authenticated solely by the opaque magic-link token in the path — no API key is required. Returns the curated details needed to render the offer review page: campaign, brand and product names, the podcast title, the invitation status and expiry, whether the recipient has passed email-code verification, and the podcast's READY voices to choose from. Internal ids and the raw verification code are never exposed.
Accept the offer in a chosen voice; the host-voiced creative is generated server-side
Accept the offer in a chosen voice; the host-voiced creative is generated server-side
Synthesize a short preview of one of the podcast's voices (returns MP3 audio)
Public, token-authenticated action that synthesizes a short sample of a selected podcast voice so the recipient can hear it before accepting. Requires prior code verification, otherwise returns 409. Keyless callers are rate limited per token and per client IP (429 on excess); a valid API key for the campaign's network bypasses the limit. Synthesis runs against an upstream voice provider, which may return 502 on failure.
Reject the offer
Public, token-authenticated action that records the recipient's decision to decline the offer: it marks both the offer and the invitation rejected and emits an offer.rejected webhook to the network. No creative is generated. Requires that the emailed code has already been verified and that the offer is still open, otherwise returns 409.
Generate and email a fresh verification code to the podcast owner
Public, token-authenticated action that generates a numeric verification code and emails it to the podcast's primary contact; the recipient must submit it to verify-code before accepting or rejecting the offer. The email send is best-effort — the code is stored even if delivery fails. Keyless callers are rate limited per token and per client IP; exceeding the limit returns 429 with a Retry-After hint. A valid API key for the campaign's network bypasses the rate limit.
Submit a verification code
Public, token-authenticated step that checks the numeric code previously emailed via send-code. Verification must succeed before the offer can be accepted or rejected. Attempts are rate limited per token and per client IP, and the code locks out after too many incorrect tries — both cases return 429, after which the recipient must request a fresh code. An expired or never-sent code returns 409.