API Overview¶
The OpenSkip API provides access to TV show intro/outro timestamps. It's a RESTful API that returns JSON responses.
Base URL¶
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¶
Error Response¶
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).
Duration¶
File duration is provided in milliseconds for precise matching:
Interactive Documentation¶
The API includes built-in interactive documentation:
- Swagger UI:
/docs- Interactive API explorer - ReDoc:
/redoc- Alternative documentation view