The Strand AI REST API is a thin wrapper around the platform’s job infrastructure. It’s the same surface the Python and R SDKs use under the hood, so you can hit it directly from any language. The OpenAPI spec is hosted atDocumentation Index
Fetch the complete documentation index at: https://docs.strandai.com/llms.txt
Use this file to discover all available pages before exploring further.
https://app.strandai.com/api/v1/openapi.json.
A Markdown variant for LLM agents is at
https://app.strandai.com/docs/api.md.
Base URL
Authentication
All endpoints require a bearer API key:Lifecycle
A prediction flows through four endpoints:Initiate an upload
POST /uploads with the slide’s filename, size, and content type.
Returns a resumable upload URL (signed GCS). PUT the slide
bytes there directly.Complete the upload
POST /uploads/{id}/complete once the bytes are uploaded. The
platform reads the slide dimensions (needed for credit estimates).Estimate, then submit
Optional:
POST /predict/estimate to see how many credits the job
will cost. POST /predict reserves credits atomically and enqueues
inference, returning a jobId.Error model
Errors are returned as JSON in a consistent shape:| HTTP | Meaning |
|---|---|
| 400 | Bad request: invalid body, unknown marker, etc. |
| 401 | Missing or invalid API key. |
| 402 | Insufficient credits. required carries the credit cost. |
| 404 | Resource not found, or scoped to a different org. |
| 409 | Resource not ready (e.g. upload not finalized). |
| 429 | Per-org concurrent-job cap exceeded. Retry-After header in seconds. |
Rate limits
There is a per-org concurrent inference job cap (currently soft, surfaced as 429 withRetry-After). Other endpoints are not rate-limited beyond
ordinary abuse protections. Get in touch if you have a high-throughput
use case and we’ll raise your cap.
SDKs
The platform ships first-party SDKs that wrap this API:Python
pip install strand-sdkR
install.packages("strandai", ...)