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