crawl.id in TypeScript, crawl.job["id"] in Python once the first frame has arrived. Store it before you need it, especially if the connection that started the crawl might drop.
Status
Results
cursor. Pages land during the crawl, so this answers before the crawl has finished, and a cancelled crawl still delivers what it had already fetched.
Cancel
limit you set on submit is the spending protection, not a refund argued afterward.
If the connection that started a streaming crawl drops, the crawl itself is cancelled. These three calls are how you read the pages you already paid for afterward.