Skip to content

API Overview

The OpenSkip API provides access to TV show intro/outro timestamps. It's a RESTful API that returns JSON responses.

Base URL

https://api.openskip.io/api/v1

For self-hosted instances, replace with your own domain.

Authentication

Reading data is public - no authentication required for querying timestamps, shows, or episodes.

Writing data requires authentication - submitting timestamps requires either:

  • JWT Token - Obtained by logging in with username/password
  • API Key - Generated from your account for programmatic access

See Authentication for details.

Rate Limits

To ensure fair usage and prevent abuse, the API implements rate limiting:

Endpoint Type Limit
Public Read (GET) 100 requests/minute
Search/List 60 requests/minute
Authentication 10 requests/minute
Submissions 30 requests/minute

When rate limited, you'll receive a 429 Too Many Requests response with a Retry-After header.

Common Response Formats

Success Response

{
  "items": [...],
  "total": 42
}

Error Response

{
  "detail": "Error message describing what went wrong"
}

Validation Error

{
  "detail": [
    {
      "loc": ["body", "field_name"],
      "msg": "Validation error message",
      "type": "error_type"
    }
  ]
}

Endpoints Summary

Shows

Method Endpoint Description
GET /shows List all shows
GET /shows/{id} Get show by ID
GET /shows/{id}/episodes List episodes for a show

Timestamps

Method Endpoint Description
GET /timestamps Query timestamps with filters
GET /timestamps/{id} Get timestamp by ID

Authentication

Method Endpoint Description
POST /auth/register Register new account
POST /auth/login Login (OAuth2 form)
POST /auth/token Login (JSON body)
GET /auth/me Get current user
POST /auth/api-keys Create API key
GET /auth/api-keys List your API keys
DELETE /auth/api-keys/{id} Revoke API key

Submissions

Method Endpoint Description
POST /submissions Submit new timestamp
GET /submissions List your submissions
GET /submissions/{id} Get submission details

Data Types

Timestamps

All timestamp values are in seconds with millisecond precision (up to 3 decimal places).

{
  "intro_start": 0.0,
  "intro_end": 45.500,
  "outro_start": 3420.0,
  "outro_end": 3480.0
}

Duration

File duration is provided in milliseconds for precise matching:

{
  "duration_ms": 3600000
}

Interactive Documentation

The API includes built-in interactive documentation:

  • Swagger UI: /docs - Interactive API explorer
  • ReDoc: /redoc - Alternative documentation view