Shorty API

Shorty API — REST for summaries, transcription & subtitles

The Shorty developer API turns YouTube videos, web pages, and media into summaries, transcriptions, and subtitles over a versioned REST surface — the same engine behind the Shorty app, with API keys, idempotency, rate limits, webhooks, and a TypeScript SDK.

Open in ClaudeOpen in ChatGPT

What it does

Shorty summarizes YouTube videos, web pages, and pasted text; transcribes audio and video; and generates subtitles. The API exposes those capabilities as async jobs you start with one call and poll (or receive a webhook) when they finish. Every resource is scoped to the authenticated account.

Base URL

All endpoints live under one versioned base. Paths in this documentation are relative to it:

https://aishorty.com/v1

Authentication

Send a shk_live_ API key (create one in Settings → API keys) or an OAuth 2.1 access token as a Bearer token on every request. Keys are shown once at creation — store them server-side; never ship a key to a browser.

Authorization: Bearer shk_live_your_key

Quickstart

Reach your first 200 in under five minutes:

  1. Create an API key in Settings → API keys and copy it (shown once).
  2. Confirm the key works by reading your usage.
  3. Start a summary job — it returns 202 with a job_id.
  4. Poll the job until it finishes (or subscribe to a webhook).
1. Check your usage (verifies the key)
curl https://aishorty.com/v1/usage \
  -H "Authorization: Bearer shk_live_your_key"
2. Start a summary job
curl -X POST https://aishorty.com/v1/summaries \
  -H "Authorization: Bearer shk_live_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "source": "youtube",
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  }'
3. Poll the job until it is done
curl https://aishorty.com/v1/jobs/JOB_ID \
  -H "Authorization: Bearer shk_live_your_key"

Conventions

  • Async jobs. Write endpoints return 202 Accepted with a job_id and a tracking_url; poll GET /v1/jobs/{id} or receive a webhook.
  • Idempotency. Send an Idempotency-Key header on POSTs; a retry with the same key and body replays the original response for 24 hours.
  • Rate limits. 60 requests/minute on the free tier, 300/minute on paid. The bucket is per API key when you authenticate with a shk_live_ key, and per user when you call as an OAuth/MCP client. Responses carry IETF RateLimit headers.
  • Pagination. List endpoints return { data, has_more, next_cursor }; pass next_cursor back as ?cursor=.
  • Errors. Every error is an RFC 9457 application/problem+json body with a stable code you can switch on.

Explore