The Platos platform exposes a FastAPI-powered REST + WebSocket API. This page lists every endpoint by resource group. For detailed request/response schemas, use the live OpenAPI spec.
Live OpenAPI
Start the API (docker compose up platos-api or uv run uvicorn platos.main:app --reload --app-dir apps/api) and open:
URL
Description
GET /openapi.json
Raw OpenAPI 3.1 JSON spec.
GET /docs
Swagger UI with try-it-out support.
GET /redoc
ReDoc three-column view.
Auth model
Every org-scoped endpoint requires a JWT on the Authorization: Bearer ... header. The JWT carries org_id and user_id claims; the API filters every query by org_id server-side. Cross-tenant leaks are a critical bug.
The SDK’s WebSocket transport uses a long-lived PLATOS_SECRET (an SDK agent JWT) rather than a user JWT. The two token types are scoped separately so a leaked SDK secret can’t impersonate an end user and vice versa.
Endpoints by resource
Health
Method
Path
Description
GET
/health
Liveness check.
Auth (/api/v1/auth)
Method
Path
Description
POST
/api/v1/auth/register
Create a new user + org.
POST
/api/v1/auth/login
Authenticate and receive access + refresh tokens.
POST
/api/v1/auth/logout
Revoke the current session.
GET
/api/v1/auth/me
Return the current user’s session status.
POST
/api/v1/auth/refresh
Exchange a refresh token for new access + refresh tokens.
Organization (/api/v1/org)
Method
Path
Description
GET
/api/v1/org
Get the current organization.
PATCH
/api/v1/org
Update organization settings.
GET
/api/v1/org/members
List org members.
POST
/api/v1/org/members
Invite a new member.
PATCH
/api/v1/org/members/{member_id}/role
Change a member’s role.
DELETE
/api/v1/org/members/{member_id}
Remove a member.
GET
/api/v1/org/api-keys
List API keys.
POST
/api/v1/org/api-keys
Create an API key.
DELETE
/api/v1/org/api-keys/{key_id}
Revoke an API key.
GET
/api/v1/org/sdk-connections
List SDK connections.
POST
/api/v1/org/sdk-connections
Create an SDK connection (generates PLATOS_SECRET).
The SDK-facing WebSocket endpoint. SDKs connect here via platools.connect() to register tools and receive tool-call dispatches. See Python Client and TypeScript Client for the wire protocol.
Generating a client
The spec is served at /openapi.json, so you can generate a client in any language:
The REST API is for dashboard, orchestration, and monitoring flows. The platools SDK package is a separate tool-registration surface.
Changes
The OpenAPI spec is generated from the FastAPI code on every request, so /openapi.json always reflects the running server. If you see drift between this page and the live spec, the live spec wins.
Next steps
Deployment - get the API running with Docker Compose.
Python SDK - the tool-registration SDK that connects via WebSocket.