API reference

Crawl jobs

Create a crawl job and retrieve its status and progress.

POST /v1/crawl-jobs

Requires the account bearer token and an Idempotency-Key of 8-200 characters. The schema is strict; unsupported fields are rejected.

FieldRequiredBehavior
promptYesTrimmed string, 1-4,000 characters.
targetsYesNonempty array of unique supported target IDs.
runCountNoInteger, minimum/default 1; deployed maximum is configurable.
options.countryNoSupported two-letter country code, normalized uppercase.
webhook.urlWhen webhook is presentCredential-free public HTTPS URL, maximum 2,048 characters.
webhook.secretNoTrimmed string, 16-200 characters; otherwise generated and returned as webhookSigningSecret.
{
  "prompt": "What are the best CRM tools for a small team?",
  "targets": [
    "google",
    "chatgpt",
    "perplexity"
  ],
  "runCount": 1,
  "options": {
    "country": "US"
  }
}

Optional completion callback

{
  "prompt": "What are the best CRM tools for a small team?",
  "targets": [
    "google",
    "chatgpt",
    "perplexity"
  ],
  "runCount": 1,
  "options": {
    "country": "US"
  },
  "webhook": {
    "url": "https://your-app.example.com/hooks/nostimates"
  }
}

If you omit webhook.secret, securely retain webhookSigningSecret returned at creation. The callback contains completion metadata and the authenticated result URL, not the artifact. See Webhooks for verification and delivery handling.

{
  "accepted": true,
  "crawlJobId": "8a1d1ac4-1bf4-4f2b-9c9c-bda9d2356e72",
  "replayed": false,
  "status": "queued"
}

The same account, key, and validated request return the original job with replayed: true and its current status. Changing the request under that key returns 409. Reuse the exact submitted request when retrying.

GET /v1/crawl-jobs/{id}

Requires the owning account token and a UUID job ID. A missing or unowned job returns 404. Status does not contain the full result artifact.

{
  "id": "8a1d1ac4-1bf4-4f2b-9c9c-bda9d2356e72",
  "prompt": "What are the best CRM tools for a small team?",
  "targets": [
    "google",
    "chatgpt",
    "perplexity"
  ],
  "requestedAt": "2026-10-09T10:00:00.000Z",
  "status": "completed",
  "result": {
    "url": "/v1/crawl-jobs/8a1d1ac4-1bf4-4f2b-9c9c-bda9d2356e72/result"
  },
  "progress": {
    "completedRuns": 2,
    "failedRuns": 1,
    "runningRuns": 0,
    "totalRuns": 3
  }
}
StatusMeaning
queuedAwaiting processing or re-dispatch.
runningProcessing is underway.
finalizingBrowser tasks are terminal; the artifact is being assembled.
completedArtifact is available, even if some or all collections failed.
failedParent-level terminal failure.

Active jobs and repeat limits

An account can have five active jobs in queued, running, or finalizing states. A further new job returns 429. This is distinct from the deployed maximum runCount and is not a per-minute request quota. No guaranteed Retry-After header or fixed public request-rate allowance is documented.