Skip to main content
POST
Call leads.capture

Authorizations

Authorization
string
header
required

An API key minted at Settings › API & MCP. Send it as Authorization: Bearer <key>. A key carries its holder's own permissions, resolved on every call — revoking a membership closes the key's reach immediately. Keep it in an environment variable (GOOSY_API_KEY), never in a committed file.

Headers

x-request-id
string

Your own id for this request, echoed back and recorded on the audit trail. 1–128 characters from A–Z a–z 0–9 . _ : -, starting with a letter or digit; anything else is replaced by a generated id.

Maximum string length: 128
Idempotency-Key
string

Your key for this write: send the same key when you retry and the first result comes back instead of a second action. Keys are honoured for at least 24 hours. 1–200 visible ASCII characters. Replaces the idempotency_key body field, which still works until 2026-12-31.

Maximum string length: 200

Body

application/json
email
string
required

The submitter's email address. Required; the contact is matched on it.

name
string

The submitter's name, as they typed it.

Maximum string length: 200
phone
string

The submitter's phone number; sent to the CRM in international form when it can be read as one.

Maximum string length: 64
form
string

Your name for the form on your site (lowercase letters, digits, - or _), e.g. newsletter or demo_request. An automation can start only on leads from one form.

Maximum string length: 64
fields
object

Every other field the form collected, by its own name, as strings. Stored with the lead as sent.

utm
object

The visit's first-touch campaign tags and click ids, when your site kept them, by their URL names: utm_source, utm_medium, utm_campaign, utm_term, utm_content, fbclid, gclid, li_fat_id. Any other key is dropped and listed in ignored_fields.

What the submitter agreed to, recorded with the lead as sent.

submission_id
string

Optional. An id naming this submission, also accepted as the Idempotency-Key header; with none, the answer's submission_id names it. Send the same value only when retrying the same submission: a retry returns the first answer and stores nothing again.

Required string length: 1 - 200
idempotency_key
string

Deprecated on REST: send the Idempotency-Key header instead. Still accepted until 2026-12-31; if both are sent they must match.

Required string length: 1 - 200
workspace
string

Which workspace to run in — its slug. Omit to use your default. With more than one reachable workspace and no default, the call is refused and the choices are listed.

Minimum string length: 1
{key}
any

Response

The call was admitted and dispatched. ok says whether the tool succeeded — a refusal the tool itself produced is still a 200, exactly as it is a successful JSON-RPC result over MCP.

The tool ran and answered.

ok
boolean
required
lead_id
string<uuid>
required
Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
contact_id
string<uuid> | null
required
Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
submission_id
string
required
replayed
boolean
required
ignored_fields
string[]
required
workspace
string
required

The slug of the workspace this call ran in.

working_in
object
required

Which workspace this call ran in, and how that was decided. Present on every workspace-scoped result.