Trigger a tracking run
promptId is optional — omit it to run every active prompt for the brand. The platforms and models come from the brand’s own configuration, not from the request. Enqueues a tracking job. Returns:
400 when brandId is missing, 404 when the brand doesn’t exist, 403 when it belongs to another organization, 409 when the brand is paused. In cloud mode the request can also return 402 (no active subscription or trial) or 429 (daily on-demand limit or cooldown reached).
Poll job status
status values: waiting, active, completed, failed, cancelled. result is only set once the job is completed, and failedReason only when it is failed. An unknown jobId returns { "success": true, "status": "not_found" }.
To cancel a running job, send DELETE /api/tracking/job/{jobId} with the same bearer token.
Internal cron endpoint
The web app’s cron route (/api/cron/daily-tracking) calls the server’s internal endpoint with a shared secret:
Vercel Cron triggers
/api/cron/daily-tracking on a schedule defined in web/vercel.json. Self-hosted servers run the same flow on their own built-in daily schedule. To run it manually for testing, hit the server endpoint directly with the cron secret.Latest results
For UI rendering, prefer the optimized RPC:prompt_results row per (prompt_id, platform) — much cheaper than SELECT … ORDER BY created_at DESC LIMIT 1 per prompt in app code.
Continue: Webhooks
Outbound webhooks for content briefs and lifecycle events.