jobId immediately and process work in the background. You poll for results using the job ID.
Which endpoints are async?
| Endpoint | Why async |
|---|---|
POST /v1/youtube/video/batch | Processes multiple videos |
POST /v1/youtube/transcript/batch | Processes multiple transcripts |
GET /v1/transcript (when mode=generate) | AI speech-to-text takes time |
POST /v1/extract | LLM processing |
POST /v1/web/crawl | Crawls multiple pages |
POST /v1/video/describe | Vision AI frame analysis |
POST /v1/video/ocr | OCR across video frames |
The polling pattern
Step 1: Start the job. You get back ajobId:
status field in the response:
Job statuses
| Status | Meaning |
|---|---|
queued | Job is waiting to be processed |
active | Job is currently being processed |
completed | Job finished successfully — results are in the response |
failed | Job encountered an error — check the error field |
Polling endpoints
Each async endpoint has a corresponding status endpoint:| Start job | Poll status |
|---|---|
POST /v1/youtube/video/batch | GET /v1/youtube/batch/{jobId} |
POST /v1/youtube/transcript/batch | GET /v1/youtube/batch/{jobId} |
GET /v1/transcript (202 response) | GET /v1/transcript/{jobId} |
POST /v1/extract | GET /v1/extract/{jobId} |
POST /v1/web/crawl | GET /v1/web/crawl/{jobId} |
POST /v1/video/describe | GET /v1/video/describe/{jobId} |
POST /v1/video/ocr | GET /v1/video/ocr/{jobId} |
Recommended polling strategy
Poll every 1-2 seconds for short jobs (single transcripts), every 5-10 seconds for batch jobs and crawls:Crawl pagination
Web crawl results can be large. The crawl status endpoint supports pagination via theskip parameter:
next field in the response indicates the offset for the next page. When next is null, you’ve retrieved all results.