Everything is an Object
Every resource in Olostep is an object with a unique identifier. Whether you create it via the API, SDK, or dashboard — you get back an object you can reference, update, and query.Objects Can Have Lifecycles
Some Olostep objects track state through astatus field. This state machine pattern lets you know exactly where each resource is in its lifecycle.
Batches
Batches have two levels of status: the batch itself and individual items. Batch Status:Batch-level failures are extremely rare. Batches almost always complete — even if some URLs fail, the batch itself reaches
completed status. In the rare case of a catastrophic infrastructure failure (e.g., LLM service outage during enrichment), the batch may fail. This affects less than 0.01% of batches.
Items can fail due to:
- URL is blocked or returns an error
- Parser output missing
- Network/fetch errors
error object with code and message explaining the failure. The batch still completes — check each item’s status when processing results.
Crawls
Crawls always complete. Even if a crawl finds 0 URLs (due to robots.txt blocking or invalid start URL), the crawl status will be
completed. Check the pages_count field to verify results.Monitors
Monitors are long-lived objects with a richer lifecycle than one-shot resources:
Creating a monitor returns HTTP
202 with status: provisioning. The monitor becomes active once planning resolves its tracked targets — poll GET /v1/monitors/:monitor_id or stream provisioning events with ?stream=1. Only active monitors can be paused, and only paused monitors can be resumed. Updates return 409 while the monitor is still provisioning.
Retrieve Pattern
Many objects produce content that can be retrieved later. Theretrieve_id pattern lets you fetch content without re-processing.
- Batch items — Each processed URL gets a
retrieve_id - Crawl pages — Each crawled page gets a
retrieve_id
/v1/retrieve endpoint accepts formats parameter to specify which content types to return (html, markdown, json, text).