API documentation
Changelog
The versions of the API contract, newest first. All of them are compatible: a client written for 1.0 still works.
Current version
v1 · 1.2.0How versions work
The path carries the major version (/v1); info.version in the OpenAPI document carries the compatible changes listed here. All of them are additive: no field removed, no required field added. A breaking change would become /v2, served alongside. Each entry carries the date of the change.
1.2.0 — Signed webhooks.
- Webhook endpoints:
GETandPOST /v1/webhooks,GET,PATCHandDELETE /v1/webhooks/{id},POST /v1/webhooks/{id}/rotateandPOST /v1/webhooks/{id}/test. Reading needsread, every changewrite; up to ten endpoints per account. - Four events —
search.finished,prospect.replied,application.received,partner.approved— signed per the Standard Webhooks specification (webhook-id,webhook-timestamp,webhook-signature). Thewhsec_secret is shown once; after a rotation the old one co-signs for 24 hours. - A failed delivery is retried after 1 minute, 5 minutes, 30 minutes, 2 hours and 12 hours. Payloads carry identifiers and counts, never an e-mail address or a message.
- Webhooks are not exposed as MCP tools: their secrets would end up in assistant transcripts.
- An unknown path under
/api/v1now answers 404not_foundasapplication/problem+json, after authentication, instead of an HTML page.
1.1.0 — Partner recruiting over the API, and the MCP server.
- 29 new operations for everything the recruiting screens do: sites, criteria and their generated topic terms, the partner search and its latest results, the shortlist and its conversion to prospects, prospects and the paid e-mail lookup, the conversational search, the creator index (search, profile, lookalikes, the library of creators found), competitors, and outreach — mailboxes, sequences, enrolment. No endpoint sends an e-mail directly.
- Scopes
read,search,writeandspend; keys created before 1.1 keep exactlyread. - Cost confirmation: an operation that spends provider credits needs
spendand aconfirmCostat least equal to the estimate; otherwise it answers 402cost_confirmation_requiredwith the estimate inerror.detailsand spends nothing. Confirmed spends are audited. Idempotency-Keyon writes (24 hours, successes only), request bodies capped at 32 KiB (413payload_too_large), an account-wide rate limit on top of the per-key one, and 20 new error codes.- The MCP server at
/api/mcp(Streamable HTTP, protocol versions 2025-11-25 back to 2024-11-05): 29 tools mirroring the API, with the same keys and scopes; paid tools confirm in two steps with aconfirmToken.
- Saved searches:
GET /v1/sites/{id}/partner-search/historyand/history/{searchId}; MCP toolslist_saved_searchesandget_saved_search. - Errors become RFC 9457 problem documents (
application/problem+json:type,title,status,detail,instance) that keep the 1.0errormember unchanged; eachtypeleads to its row on the errors page. 401 and 403 carryWWW-Authenticate. RateLimit-PolicyandRateLimit(IETF draft) next toX-RateLimit-*;X-Request-Idandtraceparentechoed; anETagon every GET,If-None-Matchanswered304.- Discovery:
/api/v1/openapi.json,/llms.txtand/llms-full.txt. - MCP: sign-in with OAuth 2.1 (MCP authorization spec 2025-11-25, PKCE S256, protected-resource metadata, server card at
/.well-known/mcp.json), default scopesread search;outputSchemaandstructuredContenton every tool;enrol_in_sequenceconfirms in two steps. - Prospects gain a
stagefield, the pipeline stage the Partners screen shows.
1.0.0 — The first contract, read-only.
- Four operations: the public program directory (
GET /v1/programs,GET /v1/programs/{slug}), the calling account (GET /v1/me) and its commissions (GET /v1/commissions). - Bearer keys
gaff_live_…, stored as a digest and shown once; a per-key rate limit by plan, withX-RateLimit-Limit,X-RateLimit-RemainingandRetry-After. - Cursor pagination, browser origins refused (CORS), and an OpenAPI 3.1 document derived from the schemas the routes enforce.
- The directory endpoints take their English path:
/v1/programmesbecomes/v1/programs.