ledger (rows, total, aiLeads, withEvidence, days) and influenced. With format=csv, the ledger as a CSV file instead.
400
An id in the path is not a valid id.
401
No valid API key was sent.
402
This needs a higher plan: Optimize and up, for format=csv only; the JSON read is open on every plan. The body names the plan gate (feature) and the lowest plan id it admits (minPlan).
404
No such brand for this key. A brand in another workspace and a client outside this seat's view answer the same way, so a 404 never confirms that an id exists.
POST /brands/{brandId}/leads/{leadId}/crm
Push one lead into your connected HubSpot or Salesforce, with its evidence.
Note
With both CRMs connected, send target. With one, the body can be empty.
About this route
Detail
Returns
ok, contactId, already and target (hubspot or salesforce). Pushing a lead twice is safe: the second push answers already: true.
Seat
A key on a member seat or above. A viewer's key is refused with 403.
Plan
Optimize and up.
Rate limit
30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own.
Engine budget
Nothing this route does is metered.
Parameter
Type
What it is
brandId (path, required)
uuid
A brand id from GET /brands.
leadId (path, required)
uuid
The lead id.
The body is JSON, and it may be left out. Its schema, taken from the route's own validation:
ok, contactId, already and target (hubspot or salesforce). Pushing a lead twice is safe: the second push answers already: true.
400
An id in the path is not valid, the body does not match the schema, or both CRMs are connected and target is missing.
401
No valid API key was sent.
402
This needs a higher plan: Optimize and up. The body names the plan gate (feature) and the lowest plan id it admits (minPlan).
403
The key belongs to a viewer seat, which can read and cannot write.
404
No such brand for this key, or no such lead on this brand.
409
No connected CRM matches: connect HubSpot or Salesforce on the Connections page first.
422
The CRM refused the push. The body says why.
429
Over the rate limit: 30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own. The Retry-After header says how many seconds to wait.
503
CRM push is not configured on this deployment.
POST /brands/{brandId}/leads/sheets
Append the lead ledger, evidence included, to your own Google Sheet.
About this route
Detail
Returns
ok, appended (the rows written) and tab.
Seat
A key on a member seat or above. A viewer's key is refused with 403.
Plan
Optimize and up.
Rate limit
30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own.
Engine budget
Nothing this route does is metered.
Parameter
Type
What it is
brandId (path, required)
uuid
A brand id from GET /brands.
The body is JSON. Its schema, taken from the route's own validation:
An id in the path is not valid, or spreadsheet is not a Google Sheets URL or id.
401
No valid API key was sent.
402
This needs a higher plan: Optimize and up. The body names the plan gate (feature) and the lowest plan id it admits (minPlan).
403
The key belongs to a viewer seat, which can read and cannot write.
404
No such brand for this key. A brand in another workspace and a client outside this seat's view answer the same way, so a 404 never confirms that an id exists.
409
Google Sheets is not connected for this brand: connect it on the Connections page first.
422
Google refused the append. The body says why.
429
Over the rate limit: 30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own. The Retry-After header says how many seconds to wait.
503
Connections are not configured on this deployment.
POST /lead-checks
Check how AI answers mention a business: the lead form's check, from your own server.
Note
Send an Idempotency-Key header (8 to 200 characters). The same key with the same inputs returns the check it made with created false; the same key with other inputs is a 409. Each prompt is asked once on each base model and draws from your AI answers pool, and a pool that cannot fund it answers 429. It creates no client and no tracked prompt: the business lands in Pitches as a lead.
About this route
Detail
Returns
created and check: its id, its status (checking, ready or not run), its prompts, and reportUrl, the report to send the business.
Seat
A key on a member seat or above. A viewer's key is refused with 403.
Plan
Agency Launch and up.
Rate limit
30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own.
Engine budget
Nothing this route does is metered.
The body is JSON. Its schema, taken from the route's own validation:
created and check: its id, its status (checking, ready or not run), its prompts, and reportUrl, the report to send the business.
400
The body does not match the schema, the Idempotency-Key is missing, or the website is not a business's own site.
401
No valid API key was sent.
402
This needs a higher plan: Agency Launch and up. The body names the plan gate (feature) and the lowest plan id it admits (minPlan).
403
The key belongs to a viewer seat, which can read and cannot write.
404
This key's seat does not read the pipeline.
409
This Idempotency-Key was used with other inputs.
429
Over the rate limit: 30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own. The Retry-After header says how many seconds to wait.
503
Lead checks are not configured on this deployment.
GET /lead-checks/{checkId}
Read one lead check: its status, its counts once ready, and its report link.
About this route
Detail
Returns
check: its status, the business, its prompts and, once ready, report: the answers that came back, how many mention the business, who AI recommends and each answer with its sources.
check: its status, the business, its prompts and, once ready, report: the answers that came back, how many mention the business, who AI recommends and each answer with its sources.
400
An id in the path is not a valid id.
401
No valid API key was sent.
402
This needs a higher plan: Agency Launch and up. The body names the plan gate (feature) and the lowest plan id it admits (minPlan).
404
No such check for this key.
POST /pitches/benchmark
Benchmark one domain: it lands in Pitches as a prospect, ready for its audit.
Note
Send an Idempotency-Key header (8 to 200 characters). The same key with the same inputs returns the pitch it made with created false; the same key with other inputs is a 409. The same domain again on the same day (UTC) returns the pitch made that day. Nothing is asked yet: run the audit from Pitches. A key whose seat is limited to named clients does not read the pipeline and gets a 404.
About this route
Detail
Returns
created, pitch (its id, name and domain), prompts and answers (what its audit will ask, and the AI answers that draws), and prospect, the business as Pitches lists it.
Seat
A key on a member seat or above. A viewer's key is refused with 403.
Plan
Agency Launch and up.
Rate limit
30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own.
Engine budget
Nothing this route does is metered.
The body is JSON. Its schema, taken from the route's own validation:
created, pitch (its id, name and domain), prompts and answers (what its audit will ask, and the AI answers that draws), and prospect, the business as Pitches lists it.
400
The body does not match the schema, the Idempotency-Key is missing, or the domain is not a business's own public website.
401
No valid API key was sent.
402
This needs a higher plan: Agency Launch and up. The body names the plan gate (feature) and the lowest plan id it admits (minPlan). Or: Your AI answers left this month do not fund one audit (answers_short), the included scans an audit uses are spent (scan_quota_reached), the trial's prospect workspace is used (trial_prospect_limit), or this month's new clients and prospects are used (quota_exceeded).
403
The key belongs to a viewer seat, which can read and cannot write.
409
This Idempotency-Key was used with other inputs.
422
The vertical gives no prompt to audit on.
429
Over the rate limit: 30 requests a minute for the workspace, counted across every write that takes this limit, the console's included. A seat limited to named clients gets 15 of its own. The Retry-After header says how many seconds to wait.
GET /brands/{brandId}/revenue-pages
Revenue by landing page in three lanes: organic, AI referral and paid.
About this route
Detail
Returns
rows (per page: organic, ai and paid sessions and revenue), totals and connected. connected is false until Google Analytics 4 is connected for the brand.
rows (per page: organic, ai and paid sessions and revenue), totals and connected. connected is false until Google Analytics 4 is connected for the brand.
400
An id in the path is not a valid id.
401
No valid API key was sent.
402
This needs a higher plan: Optimize and up. The body names the plan gate (feature) and the lowest plan id it admits (minPlan).
404
No such brand for this key. A brand in another workspace and a client outside this seat's view answer the same way, so a 404 never confirms that an id exists.
502
Google answered with an error. The connection is fine; try again shortly.
503
Integrations are not configured on this deployment.
GET /brands/{brandId}/search-wins
Search Console drops, click through quick wins and demand without a page.
About this route
Detail
Returns
configured, site, window and wins. configured is false when Search Console reads are not set up on this deployment.
configured, site, window and wins. configured is false when Search Console reads are not set up on this deployment.
400
An id in the path is not a valid id.
401
No valid API key was sent.
402
This needs a higher plan: Optimize and up. The body names the plan gate (feature) and the lowest plan id it admits (minPlan).
404
No such brand for this key. A brand in another workspace and a client outside this seat's view answer the same way, so a 404 never confirms that an id exists.