katsau Docs
POST/v1/jobs

Process thousands of URLs asynchronously with bulk extraction jobs.

Enterprise

⚡ Async Bulk Processing

Process up to 500,000 URLs per job. Perfect for data enrichment pipelines, SEO audits, and large-scale metadata extraction.

Endpoints

POST/v1/jobsCreate a new job
GET/v1/jobsList all jobs
GET/v1/jobs/:idGet job status
DELETE/v1/jobs/:idCancel a job
GET/v1/jobs/:id/resultsGet job results

Create Job - Request Body

NameTypeRequiredDefaultDescription
typeenum-extract | validate | analyze
urlsarray-Array of URLs (1 to 50,000 per request)
options.include_screenshotbooleanfalseInclude screenshots
options.include_quality_scorebooleantrueInclude quality scores
options.cachebooleantrueUse cached results
callback.urlstring-Webhook URL for completion notification
callback.formatenumjsonjson | csv | ndjson
priorityenumnormallow | normal | high

Create Job Example

curl -X POST "https://api.katsau.com/v1/jobs" \
  -H "Authorization: Bearer ks_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "extract",
    "urls": [
      "https://example1.com",
      "https://example2.com",
      "https://example3.com"
    ],
    "options": {
      "include_quality_score": true
    },
    "callback": {
      "url": "https://myapp.com/webhooks/job-complete",
      "format": "json"
    },
    "priority": "normal"
  }'

Create Response

{
  "success": true,
  "data": {
    "job_id": "job_abc123xyz",
    "type": "extract",
    "status": "queued",
    "total_urls": 3,
    "estimated_time_seconds": 1,
    "priority": "normal",
    "expires_at": "2024-01-22T00:00:00Z",
    "created_at": "2024-01-15T12:00:00Z"
  },
  "meta": { "request_id": "req_abc123" }
}

Job Status Response

{
  "success": true,
  "data": {
    "job_id": "job_abc123xyz",
    "type": "extract",
    "status": "processing",
    "progress": {
      "total": 1000,
      "completed": 456,
      "failed": 12,
      "percentage": 47
    },
    "priority": "normal",
    "results_url": null,
    "started_at": "2024-01-15T12:00:05Z",
    "estimated_completion": "2024-01-15T12:01:30Z",
    "expires_at": "2024-01-22T00:00:00Z"
  }
}

Results Formats

Use the format query parameter on /v1/jobs/:id/results:

json

Standard JSON with pagination. Best for APIs.

csv

CSV file download. Best for spreadsheets.

ndjson

Newline-delimited JSON. Best for streaming.

Plan Limits

PlanMax URLs/JobConcurrentRetention
FreeNot available--
Starter1,0001 job1 day
Pro10,0003 jobs7 days
Business50,00010 jobs30 days
Enterprise500,00050 jobs90 days

Job Lifecycle

queuedprocessingcompleted|failed|cancelled