# Monkeygun > Data in, video out. Monkeygun is an API-first video engine: send it data — prose, a URL, a token address, CSV/JSON rows, race results, a prediction-market link — and it finds the stories that data actually supports, then films the one you pick as a finished, narrated video. The website is just a client of the same API; everything below is reachable with one Bearer key and JSON. Base URL: https://api.monkeygun.com/v1 Auth: `Authorization: Bearer sk_live_…` — a key is the account (POST /v1/keys, no signup, no OAuth). Public catalog reads (GET /v1/templates, /v1/looks, /v1/styles) need no key. ## What you can do here 1. Bring data — text, a URL, a token address, CSV/JSON rows, race results, or a prediction-market link. POST /v1/stories takes columns-and-rows or prose; token, chain and market templates take the address or link directly. 2. Get stories — a ranked list of every story the data supports, each with the evidence behind it. You pick one; the film argues exactly that story. 3. Tune it — angle (hype / proud / straight / skeptical / roast), tone, pace, format and style dials shape the same story into a different film. 4. Brand it — automatic extraction from your site, or supply your own cta, markUrl and clips. 5. Render — priced before you pay: POST /v1/estimate quotes a ceiling, POST /v1/render bills min(quoted, actual), GET /v1/jobs/:id collects the result. 6. Automate — register feeds, set triggers, connect Buffer, receive signed webhooks. A confidence gate holds weak films for review instead of posting them. 7. Account — credits and subscriptions on the key; self-serve creation, recovery and provider-key (BYOA) management. 8. Bring footage — POST /v1/clips pulls spans of your own video into a per-key library (attest: true per item; label what each clip shows). GET /v1/images/search finds stills across four pools with licenses in plain words. Both reach the frame: /v1/render takes picked images as a top-level assets object with rightsConfirmed: true, and your own stored clips as clips: [{clipId, beatId?}] — or useLibrary: true to cast from the whole labeled library — on the monkeygun and monkeygun-story lanes. A clip is cast onto the beat whose scene its LABEL matches, so an unlabeled clip is never cast; a picked image is placed into a beat and can also condition generated footage. Naming a clip that is not yours is a 404, never a silent drop, and lanes that cannot cut footage refuse the field rather than ignoring it. ## Docs - [API reference](/docs): quickstart, the full flow, every endpoint grouped by intent - [Full endpoint reference](/llms-full.txt): the complete list — method, path, auth, description — plus the quickstart curls - [OpenAPI spec](https://monkeygun.com/openapi.yaml): the machine-readable contract