For assistants and scripts
Call GrabGrab from an assistant
The same download API serves the website, the Chrome extension, scripts, and AI tools. X and Twitter come first. Public TikTok, Vimeo, and Facebook videos use the same request. YouTube is refused before any download starts.
curl
POST a public URL. videoQuality can be max, 2160, 1440, 1080, 720, 480, or 360. The second snippet saves a file URL from the JSON. Do not send a Turnstile token from a script.
curl -s -X POST "https://www.grabgrab.fun/api/download" \
-H "Content-Type: application/json" \
-d '{"url":"https://x.com/X/status/1697304622749086011","videoQuality":"1080"}'curl -L -o video.mp4 "PASTE_THE_URL_FROM_THE_JSON"MCP
Claude Desktop, Cursor, and other MCP clients can use the stateless endpoint https://www.grabgrab.fun/api/mcp. The tool is download_video with url and optional quality. It uses the same allowlist and rate limit as the HTTP API. Paste this config, then restart the client.
{
"mcpServers": {
"grabgrab": {
"url": "https://www.grabgrab.fun/api/mcp"
}
}
}CLI
A small Node client is in the repository at packages/cli and is not published to npm yet. It prints the JSON. It does not add an API key. From a checkout, run the command below.
node packages/cli/bin/grabgrab.mjs "https://x.com/X/status/1697304622749086011" 1080ClawHub skill
The skill files live in skills/grabgrab and describe the same X-first workflow, including MCP and curl. The public ClawHub page updates only after the owner publishes version 1.2.0. Assistants should not invent a key.
Limits
Browsers on grabgrab.fun complete the human check when Turnstile is enabled. Scripts, MCP clients, and the extension do not send that token, so they use the smaller API limit, about 6 requests per 10 minutes per IP on each server instance. Private and deleted posts fail. YouTube returns youtube_not_supported.