The developer surface
The developer surface is the programmatic mirror of the dashboard’s developer hub: governance and budgets for your API keys, event-stream sinks and inbound sources, API analytics, contract downloads (AsyncAPI, GraphQL SDL, Postman), SDK and connector catalogs, and OAuth marketplace metadata. It is what to hit first when provisioning an integration — everything below is read-mostly config and observability, never outbound message origination.Sandbox routing for every operation on this page rides on the
X-Test-Mode request header the auto-generated sections annotate: a sandbox opt-in for Clerk-session-authenticated calls that routes through the test-mode pipeline (no provider delivery, no credits deducted, meta.test_mode: true). Live API keys (dv_live_sk_*) ignore it; server-to-server clients exercise sandbox with a test-prefixed key (dv_test_sk_*), which enables sandbox unconditionally. The per-request pin is the same one the sandbox test-mode guide covers.data plus a meta block carrying request_id and timestamp. On the download-style endpoints (contracts, blueprints, SDK sources) the body is the artifact itself rather than an envelope; those shots are quoted verbatim per the console. Errors follow the { error, meta } shape spelt out under Errors worth branching on and the tables at the bottom.
For SDK walkthroughs in your language, start from the Node.js guide — the catalog endpoint below (GET /api/v1/developer/sdks) is how you discover the published coordinates programmatically, and the /api/v1/developers/cdp-sdk/* endpoints below download tenant-wired tracking SDK sources. The guides that pair with this page: developer hub overview, API governance console, developer API playground, and error handling examples for the decision matrix.
Response envelopes for the generated shells
The operations below all return a 200 whose JSON body the generated sections render as the empty"data": {} shell. Each block ships the real { data, meta } envelope the route returns — copy
it as the parsing target, then pull the fields your integration actually branches on. Download
operations (AsyncAPI, GraphQL SDL, Postman, connector blueprints, SDK sources, OAuth manifest) wrap
a download pointer or the artifact payload inside the same envelope.
1. List dated API versions and deprecation lifecycle
GET /api/v1/developer/api-versions2. View per-API-key spend budgets
GET /api/v1/developer/budgets3. Get the event-streaming sink config for one kind
GET /api/v1/developer/event-sinks/{kind}4. Get the inbound event-source config for one kind
GET /api/v1/developer/event-sources/{kind}5. View API rate-limit & quota governance
GET /api/v1/developer/governance6. Download the developer GraphQL schema (SDL)
GET /api/v1/developer/graphql/schema7. List received inbound webhooks
GET /api/v1/developer/inbound-webhooks8. Get an inbound webhook by id
GET /api/v1/developer/inbound-webhooks/{id}9. List official SDK libraries
GET /api/v1/developer/sdks10. Get API usage statistics for the current tenant
GET /api/v1/developer/usage-stats11. API analytics by API key
GET /api/v1/developers/api-analytics/by-key12. API analytics by endpoint
GET /api/v1/developers/api-analytics/endpoints13. API analytics overview
GET /api/v1/developers/api-analytics/overview14. API analytics rate-limit usage
GET /api/v1/developers/api-analytics/rate-limits15. API analytics time series
GET /api/v1/developers/api-analytics/timeseries16. Download the AsyncAPI contract for platform events
GET /api/v1/developers/asyncapi.json17. List available CDP client tracking SDKs
GET /api/v1/developers/cdp-sdk/catalog18. Download a CDP client SDK source for a platform
GET /api/v1/developers/cdp-sdk/source/{platform}19. List connector triggers and actions
GET /api/v1/developers/connector/catalog20. Download the Make (Integromat) app blueprint
GET /api/v1/developers/connector/make21. Download the n8n node-pack definition
GET /api/v1/developers/connector/n8n22. Download the Zapier app definition
GET /api/v1/developers/connector/zapier23. Preview the consent screen for a scope request
GET /api/v1/developers/oauth/consent-preview24. Download the OAuth app-registration manifest
GET /api/v1/developers/oauth/manifest25. List grantable OAuth scopes
GET /api/v1/developers/oauth/scopes26. Download a Postman collection for this workspace
GET /api/v1/developers/postman-collection27. Download a Postman environment for this workspace
GET /api/v1/developers/postman-environment28. Dry-run one polled batch through the inbound consume core
POST /api/v1/developer/event-sources/{kind}/consume-batch29. Run a GraphQL query over CPaaS/CDP resources
POST /api/v1/developer/graphql30. Register interest in the Network APIs early-access program
POST /api/v1/developer/network-apis/early-access31. Proxy an API request from the try-it console
POST /api/v1/developer/try-it32. Ask-Orbit — natural-language API analytics
POST /api/v1/developers/api-analytics/ask33. Set per-API-key spend budget
PUT /api/v1/developer/budgets/{keyId}34. Set per-API-key rate-limit & spend override
PUT /api/v1/developer/governance/keys/{keyId}35. Set org-wide API rate-limit & spend governance default
PUT /api/v1/developer/governance/org36. Update the event-streaming sink config for one kind
PATCH /api/v1/developer/event-sinks/{kind}37. Update the inbound event-source config for one kind
PATCH /api/v1/developer/event-sources/{kind}Errors worth branching on
These five failures cover the webhook register + test-fire (POST /api/v1/developer/webhooks, POST /api/v1/developer/webhooks//test), which connect-checks every save. Each block below is a full{ error, meta } envelope as the API returns it, and the matrix at the bottom answers retry vs surface for the same five classes. For the platform-wide decision table these branches plug into, see the error handling guide.
401 — Unauthorized
401 on this page is the bearer key failing before the route ran — it never means the resource is wrong. Rotate the key or re-mint the scoped token; retrying the same request changes nothing.
403 — Forbidden
403 means the key authenticated but the operation is gated by scope — check the key’s scopes on the developer page; a 403 is never a data-not-found shape.
422 — Schema
422 means the payload did not match the request schema — branch on error.details.field and resend with a publicly reachable https:// webhook URL instead of blind-retrying the same body.
429 — Rate
Retry-After header and error.details.retry_after are both set on every 429 — resend the SAME request after the lower of the two.
402 — Feature gate
60-second retry matrix
Worked request and response samples
Copy the request as written, substitute your own ids, and compare the response envelope — a success in the same shape the numbered error sections spell out.List inbound webhooks
GET /api/v1/developer/inbound-webhooksRead one inbound webhook in full
GET /api/v1/developer/inbound-webhooks/{id}Inspect dated API versions
GET /api/v1/developer/api-versionsX-Api-Version pin header, and where the migration guide lives. Pin a dated version with the X-Api-Version request header.
Request
View per-API-key spend budgets
GET /api/v1/developer/budgetsbudget: null.
Request
Set a per-key spend budget
PUT /api/v1/developer/budgets/{keyId}limit_minor: null) removes the cap and re-arms the alert watermark. Only the fields you send change.
Request
View the event-streaming sink config
GET /api/v1/developer/event-sinks/{kind}message.* / call.* taxonomy streams to your Kafka topic or batch HTTP collector. Credentials never leave storage encrypted; the response carries only a credentials_configured flag.
Request
Update the event-streaming sink config
PATCH /api/v1/developer/event-sinks/{kind}kind discriminator must match the path segment. last_run_* fields are worker-owned and never accepted through this route.
Request
Read the inbound event-source config
GET /api/v1/developer/event-sources/{kind}transport_enabled tells you whether the managed consumer is armed.
Request
Update the inbound event-source config
PATCH /api/v1/developer/event-sources/{kind}Dry-run one polled batch through the inbound consume core
POST /api/v1/developer/event-sources/{kind}/consume-batchView org-wide rate-limit & quota governance
GET /api/v1/developer/governanceSet the org-wide governance default
PUT /api/v1/developer/governance/orgnull on a field to clear it; only the fields you send change.
Request
Set a per-API-key governance override
PUT /api/v1/developer/governance/keys/{keyId}List official SDK libraries
GET /api/v1/developer/sdkspublished flag, the registry install command, and docs_url / source_url only where they resolve. Every pre-launch coordinate comes back published: false. This is the programmatic surface the SDK catalog guide and Node.js SDK page point back to.
Request
Get API usage statistics for the current tenant
GET /api/v1/developer/usage-statsAPI analytics overview
GET /api/v1/developers/api-analytics/overviewerror_rate, p50_latency_ms, p95_latency_ms) are scoped to genuine api-key traffic and are null (not 0) when the key-scoped scope has no rows in the window — render an explicit unavailable placeholder, as they do on the dashboard.
Request
API analytics by endpoint
GET /api/v1/developers/api-analytics/endpointsAPI analytics time series
GET /api/v1/developers/api-analytics/timeseriesAPI analytics rate-limit usage
GET /api/v1/developers/api-analytics/rate-limitsAPI analytics by API key
GET /api/v1/developers/api-analytics/by-keytotal_keys revealing when the view is truncated. Sentinel ids mark unattributed (Clerk session) or deleted keys.
Request
Ask-Orbit — natural-language API analytics
POST /api/v1/developers/api-analytics/askunderstood: false when the question fell back to the default request-volume metric.
Request
Run a GraphQL query over CPaaS/CDP resources
POST /api/v1/developer/graphql{ data, errors } envelope (not the REST envelope) — a well-formed request whose query fails to parse still 200s with an errors array. The SDL below is served at GET /developer/graphql/schema.
Request
Download the GraphQL schema (SDL)
GET /api/v1/developer/graphql/schemaContent-Type: text/plain so a browser / codegen tool reads it directly.
Request
Download the AsyncAPI contract for platform events
GET /api/v1/developers/asyncapi.jsonList available CDP client tracking SDKs
GET /api/v1/developers/cdp-sdk/catalogDownload a CDP client SDK source for a platform
GET /api/v1/developers/cdp-sdk/source/{platform}web | ios | android, pre-wired to this tenant’s public ingest host — sent as a file attachment.
Request
List connector triggers and actions
GET /api/v1/developers/connector/catalogDownload the Zapier app definition
GET /api/v1/developers/connector/zapierDownload the Make blueprint
GET /api/v1/developers/connector/makeDownload the n8n node-pack definition
GET /api/v1/developers/connector/n8nn8n-nodes-orbit community node-pack definition, pre-wired to this tenant’s base URL — sent as an attachment.
Request
List grantable OAuth scopes
GET /api/v1/developers/oauth/scopesadmin, the * wildcard, and billing are never grantable.
Request
Preview the consent screen for a scope request
GET /api/v1/developers/oauth/consent-previewDownload the OAuth app-registration manifest
GET /api/v1/developers/oauth/manifestDownload a Postman collection
GET /api/v1/developers/postman-collectionDownload a Postman environment
GET /api/v1/developers/postman-environmentsecret and deliberately blank.
Request
Proxy an API request from the try-it console
POST /api/v1/developer/try-itdv_live_sk_, dv_test_sk_, dv_live_pk_, dv_test_pk_), and for GETs a body object becomes query-string parameters. The upstream response is echoed verbatim — the status_code + parsed headers + body are the live API’s.
Request
Register interest in Network APIs early access
POST /api/v1/developer/network-apis/early-accessError shapes worth branching on
The developer surface returns the same{ error, meta } envelope across every endpoint — the fields the webhooks register + 402/429 matrix at the top uses, extended to the config writes below. The retry decision comes from error.code (and, for RATE_LIMITED, error.details.retry_after).
For the webhooks register + test-fire envelope (
{ error, meta } and the retry matrix), see Errors worth branching on at the top of this page. The error handling guide covers the same decision table for every pillar.