api

Video download API

The API behind the app: no key, no signup. Works with YouTube, Instagram, X / Twitter, TikTok, Bluesky. Full spec: /openapi.json (OpenAPI 3.1).

Download in three calls

# 1. start: quality 1080 | 720 | 480 | 360 | audio (MP3)
$ curl -X POST https://gimmeclip.com/api/jobs \
    -H 'content-type: application/json' \
    -d '{"url":"https://youtu.be/jNQXAC9IVRw","quality":"720"}'
{"id":"1c0ffee…"}

# 2. poll about once a second until state is done (or error)
$ curl https://gimmeclip.com/api/jobs/1c0ffee…
{"state":"downloading","phase":"download","percent":42.5,"bytes":2175381,"speed":949007}
{"state":"done","percent":100,"name":"Me at the zoo.mp4","size":629172,"type":"video/mp4"}

# 3. fetch the file (Range supported; dl=1 → attachment)
$ curl -OJ 'https://gimmeclip.com/api/jobs/1c0ffee…/file?dl=1'

Files are MP4 (H.264 + AAC) or MP3 (192 kbps) and are deleted 15 minutes after the last request. Multi-video posts take "item": n (1-based) — see items below.

Video details

GET /api/info?url=<video link>
{
  "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw",
  "site": "YouTube",
  "title": "Me at the zoo",
  "uploader": "jawed",
  "duration": 19,
  "thumbnail": "https://i.ytimg.com/vi/jNQXAC9IVRw/hqdefault.jpg…",
  "items": [
    { "title": "Me at the zoo", "duration": 19, "thumbnail": "…", "qualities": [360], "audio": true }
  ],
  "cached": false
}

url is the canonical link (tracking parameters removed, short links expanded). qualities lists the resolution caps that exist for that video, best first; an empty list means unknown — ask for 1080 to get the best. Results are cached for 6 hours.

Share links

https://gimmeclip.com/<video link>
https://gimmeclip.com/x.com/i/status/1600009574919962625

Opens the web app with the video loaded. Chat apps and social sites get the video’s title and thumbnail as the link preview. The scheme is optional; query strings are kept.

Limits & errors

LimitValue
Downloads40 per IP per day; 6 per minute
Detail lookups20 per minute (cached lookups too)
VideoPublic only; up to 2 hours, 1 GB, 1080p
RefusedPlaylists, channels, profiles, stories, live streams

Errors are {"error":"…"} with a 4xx/5xx status; messages are written for people and safe to show. 429 means a limit was hit.