openapi: 3.2.0 info: title: Savee Public System API version: 1.0.0 contact: name: Savee url: https://docs.savee.com email: hey@savee.com termsOfService: https://savee.com/terms/ license: name: Proprietary — Savee Terms of Service url: https://savee.com/terms/ description: 'Read-only REST API exposing a Savee user’s own saves, boards, and home feed, plus search over Savee’s public library. Authenticate with either a personal access token (`sv_live_…`) generated in your Savee settings, or an OAuth 2.1 access token (`sv_at_…`) obtained on one of your users’ behalf. OAuth tokens are limited to the scopes the user approved; personal tokens carry all of them. **Image format** — `media.thumbnail` and `media.original` for image saves are AVIF by default. Clients that cannot decode AVIF should send the request header `Avif-Fallback: 1` to receive JPG URLs instead. Video originals are always MP4.' servers: - url: https://api.savee.com tags: - name: System paths: /v1/ping: get: summary: Health check tags: - System responses: '200': description: Server is up. content: application/json: schema: type: object properties: status: type: string enum: - ok required: - status /v1/openapi.json: get: summary: Get the OpenAPI spec description: The machine-readable OpenAPI 3.1 description of this API. No auth required. Point code generators and agents at this URL rather than at a copied snapshot, so they stay accurate as the API evolves. tags: - System responses: '200': description: The OpenAPI 3.1 document describing the v1 surface. content: application/json: schema: type: object properties: {} components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: sv_live_… description: '**Personal access token** (`sv_live_…`) — represents you and carries every scope, so no scope is required for this call. Best for your own scripts and internal tools. Generate one at https://savee.com/developers/.' OAuth2: type: oauth2 description: '**OAuth access token** (`sv_at_…`) — obtained on one of your users’ behalf and limited to the scopes they approved. Use this when you’re building a product other people sign into with Savee. See https://docs.savee.com/api/oauth. Missing the scope below returns `403` with a `WWW-Authenticate: Bearer error="insufficient_scope"` header naming it.' flows: authorizationCode: authorizationUrl: https://savee.com/oauth/authorize/ tokenUrl: https://savee.com/api/oauth/token/ refreshUrl: https://savee.com/api/oauth/token/ scopes: profile:read: Read the user’s username, name, and avatar saves:read: Read the user’s saves and home feed boards:read: Read the user’s boards and the saves on them search:read: Search Savee’s public library on the user’s behalf