RudderStack · OpenAPI Overlay 1.0.0
RudderStack HTTP API — API Evangelist enhancements
7 actions
7 updates
update
Generated by API Evangelist
Written by API Evangelist tooling for RudderStack's API. It is a proposal applied on top of the contract, not a document RudderStack publishes.
What the actions change
x-detailx-base-url-policyx-payload-limitsx-docsx-regionsx-credential-placementx-scopex-rate-limit-headers
Targets 7
$.info
$.servers
$.components.securitySchemes.writeKeyAuth
$.paths.*.post.responses.429
$.paths.*.post.responses.400
$.paths.*.post
$.paths./v1/batch.post
OpenAPI Overlay
overlay: 1.0.0
info:
title: RudderStack HTTP API — API Evangelist enhancements
version: 1.0.0
x-provenance:
generated: '2026-08-13'
method: generated
source: >-
Enhancements captured from https://www.rudderstack.com/docs/api/http-api/ and
the artifacts in this repo (authentication/, conventions/, errors/,
rate-limits/, lifecycle/). Extends openapi/rudderstack-http-api-api-openapi.yml
without mutating it.
extends: openapi/rudderstack-http-api-api-openapi.yml
actions:
- target: $.info
description: Name the real base URL policy and the documented payload limits, which the spec does not carry.
update:
x-base-url-policy: >-
The HTTP tracking API is served from the workspace's DATA PLANE URL, assigned
in the RudderStack dashboard under Connections. There is no single global
ingest host — RudderStack Cloud issues one per workspace and self-hosted
rudder-server operators run their own.
x-payload-limits:
max_event_size: 32 KB per call
max_batch_size: 4 MB per batch
max_json_nesting_depth: 200
oversize_status: 400
x-docs: https://www.rudderstack.com/docs/api/http-api/
x-regions:
control_plane_us: https://api.rudderstack.com
control_plane_eu: https://api.eu.rudderstack.com
note: >-
The regional split applies to the CONTROL plane. The data plane URL is
per-workspace and is not region-suffixed in the same way.
- target: $.servers
description: >-
Replace the relative "/v1" server with an explicit templated data-plane server.
A relative server URL makes the spec uncallable; a template names the host and
says a variable is required.
update:
- url: 'https://{dataPlaneUrl}'
description: >-
Workspace data plane. Copy the value from the RudderStack dashboard
(Connections). Self-hosted deployments substitute their own rudder-server host.
variables:
dataPlaneUrl:
default: hosted.rudderlabs.com
description: >-
Workspace-specific data plane hostname. hosted.rudderlabs.com is
RudderStack's shared hosted data plane and answers a health payload at
its root (HTTP 200, probed 2026-08-13); most workspaces are issued a
dedicated hostname.
- target: $.components.securitySchemes.writeKeyAuth
description: Document how the write key is actually presented.
update:
x-credential-placement: >-
HTTP Basic with the source write key as the USERNAME and an EMPTY password —
`curl -u <source_write_key>: -X POST <data_plane_url>/v1/track`.
x-scope: >-
Write-only, single source. A write key cannot read or configure anything and
will NOT authenticate against the control plane at api.rudderstack.com.
x-detail: authentication/rudderstack-authentication.yml
- target: $.paths.*.post.responses.429
description: State the rate-limit signalling reality on every throttled response.
update:
x-rate-limit-headers: none
x-retry-after: not sent
x-client-guidance: >-
RudderStack publishes no X-RateLimit-*, RateLimit-* or Retry-After headers.
Exponential backoff is the only viable strategy — the 429 is the entire signal.
x-detail: rate-limits/rudderstack-rate-limits.yml
- target: $.paths.*.post.responses.400
description: Enumerate the documented causes of a 400, which the one-line description omits.
update:
x-causes:
- Invalid request method
- Invalid request body
- Invalid source or destination ID
- Empty batch payload
- Event exceeds 32 KB per call or 4 MB per batch
- Event exceeds the 200-level JSON nesting depth
x-detail: errors/rudderstack-problem-types.yml
- target: $.paths.*.post
description: >-
Record that these operations are NOT idempotent at the request level and how
de-duplication actually works.
update:
x-idempotent: false
x-idempotency-key-header: null
x-dedupe-field: messageId
x-idempotency-note: >-
RudderStack documents no Idempotency-Key header. The SDKs generate a
per-event `messageId` used for downstream de-duplication, but a bare retry of
an HTTP POST carries no replay guarantee.
x-detail: conventions/rudderstack-conventions.yml
- target: $.paths./v1/batch.post
description: Note the batch-specific limits.
update:
x-batch-limits:
max_batch_size: 4 MB
max_call_size_within_batch: 32 KB
empty_batch: rejected with 400
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/rudderstack-http-api-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.