HTTP API
Reference for EnderDash's generated tRPC HTTP surface, including authentication, request format, response format, and scope.
What this API is
EnderDash exposes an authenticated HTTP API generated from the app's tRPC router.
This is separate from the real-time browser-to-agent channel, which uses protobuf RPC over WebRTC data channels.
Authentication
The HTTP API accepts either:
- a signed-in EnderDash session cookie
- a user API key sent as
X-API-Key
It does not accept per-server agent keys.
Agent keys do not authenticate the HTTP API
Agent keys are only for registering an agent to a server record. Use a browser session or a user API key for HTTP calls.
OpenAPI documents
- Production schema:
https://app.enderdash.com/openapi.json - Local development schema:
http://app.enderdash.localhost:1355/openapi.json - Generated docs section: OpenAPI
Import the schema into Postman, Insomnia, or another OpenAPI-compatible tool if you want generated request shapes.
Base path and request model
The generated surface is exposed under /api/trpc.
| Operation type | Path shape | Input format |
|---|---|---|
| Query | GET /api/trpc/<router>.<procedure> | Serialized in the input query parameter |
| Mutation | POST /api/trpc/<router>.<procedure> | Serialized in the JSON request body |
Responses use the standard tRPC envelope:
{
"result": {
"data": {}
}
}Because EnderDash uses superjson, generated clients should use the same transformer when decoding responses.
What is included
The generated HTTP surface currently covers public and protected procedures from routers such as:
activityauthocelotorganizationsservers
Access rules still follow normal EnderDash authorization:
- organization membership
- server grants
- admin-only procedures
- plan limits
What is not included
- WebRTC signaling and the browser-to-agent transport
- tRPC subscriptions
- Ocelot streaming chat
- complete recursive schemas for some activity metadata, because
@trpc/openapihas a depth limit
Error behavior
| Status | Meaning |
|---|---|
400 | Invalid input |
401 | Missing authentication |
403 | Authenticated but not allowed |
404 | Resource not found |
409 | Blocked by resource state or plan limits |
429 | Rate limit exceeded |
Practical curl example
curl \
-H 'X-API-Key: <user-api-key>' \
'https://app.enderdash.com/api/trpc/servers.listServers?input=%7B%22json%22%3A%7B%22organizationSlug%22%3A%22test%22%7D%7D'Was this page helpful?
Send a quick note if anything is missing or unclear.
Last updated on