Getting Started
Authentication
Authenticate against the Stream Estate API with an API key
The Stream Estate API uses an API key passed in the X-API-KEY header on every request.
Get your API key
Create an account on the console, then generate a v2 key from the keys screen:
- π Keys screen β console.stream.estate/api-keys
- π No account yet β console.stream.estate/signup
Account creation is currently done via GitHub or Google sign-in. A non-interactive flow (device-code / API key creation) for agents and CI is planned β see the changelog.
Required header
X-API-KEY: <your_key>cURL example
curl https://api-v2.stream.estate/sources \
-H "X-API-KEY: <your_key>"Usage tracking
The GET /account/api-usage endpoint (tag Account) exposes billable usage aggregates for your account. It's the source of truth for monitoring consumption on the billing side. The response carries:
periodβ the window actually covered (start,end,granularity);totalsβcallsandresults(items returned) over the period, pluscreditswhen your account is billed in credits;timeSeriesβ one point per time bucket;byApiKey,byRoute,byChannelβ the same consumption broken down by key, by route, and by call channel (DIRECTfor direct HTTP calls,MCPfor calls made through the MCP server).
Query parameters:
| Parameter | Role |
|---|---|
startDate / endDate | Period bounds (ISO 8601, start included, end excluded; a bare date covers that whole day in UTC). Default: last 30 days / now. |
apiKeyId | Only count calls made with one of your keys (public UUID). |
channel | Only count calls issued through one channel: DIRECT or MCP. |
granularity | Width of each timeSeries point: YEAR, MONTH or DAY. It does not group anything. |
groupBy | Dimension that splits each timeSeries point: API_KEY, ROUTE or CHANNEL. Each row then carries the matching field (apiKeyId / apiKeyName, route / routeType, channel). |
See the reference for the full schema.
Treat your key like a password. Never commit it to a public Git repository.