CrowNest
API reference

API overview

Base URL, versioning, resource model, and rate limits for the CrowNest REST API.

The CrowNest REST API gives you programmatic control over sandboxes, commands, files, artifacts, previews, and usage. Every SDK and the CLI is built on this API, so anything they can do, you can do with plain HTTP.

Base URL and versioning

All requests go to a single base URL, and every route is versioned under /v1:

https://api.crownest.dev/v1

Breaking changes ship under a new version prefix. Additive changes, such as new optional fields or new endpoints, can appear within /v1 without notice, so write clients that ignore unknown fields.

Content type

The API speaks JSON. Send request bodies as application/json and expect JSON responses, including for errors. A typical request looks like this:

Terminal
curl https://api.crownest.dev/v1/sandboxes \
  -H "Authorization: Bearer $CROWNEST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"template": "python"}'

Resource model

CrowNest organizes resources under an organization. An organization owns projects, and most resources belong to both. Each resource ID carries a prefix that identifies its type:

PrefixResource
org_Organization
prj_Project
key_API key
sbx_Sandbox — isolated live execution environment
cmd_Command — top-level process invocation record
art_Artifact — durable, indexed output in object storage
prv_Preview — authenticated exposed HTTP service
tpl_Template — user-facing environment slug
tplv_TemplateVersion — immutable resolved environment

IDs are opaque strings. Don't parse anything after the prefix.

Rate limits

Each API key can make 120 requests per 60-second window. When you exceed the limit, the API responds with HTTP 429 and the error code rate_limited. Back off and retry after a short delay.

[!NOTE] Rate limits and quotas are configurable beta defaults. They depend on your plan and may change.

Reference sections

The reference is organized by resource. Cross-cutting behavior such as authentication, error handling, pagination, and idempotency has its own pages:

Next steps

On this page