> ## Documentation Index
> Fetch the complete documentation index at: https://rendobar.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Keep the API key in an env var (RENDOBAR_API_KEY), never in chat or committed code.
> Job types change, so fetch the live catalog from GET https://api.rendobar.com/jobs/types rather than relying on memory.
> The full integration prompt for coding agents is at https://rendobar.com/prompts/integrate.md.

# Let your AI agent integrate the API

> Add media processing to your app by handing your AI agent one prompt. Open it in ChatGPT or Cursor, paste it into Claude, or save it as a repo rule.

<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{
__html: JSON.stringify({
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "@id": "https://rendobar.com/docs/build-with-ai/#article",
  "headline": "Let your AI agent integrate the API",
  "description": "Add media processing to your app by handing your AI agent one prompt. Open it in ChatGPT or Cursor, paste it into Claude, or save it as a repo rule.",
  "datePublished": "2026-08-15",
  "dateModified": "2026-08-15",
  "author": { "@type": "Organization", "@id": "https://rendobar.com/#organization" },
  "publisher": { "@type": "Organization", "@id": "https://rendobar.com/#organization" },
  "isPartOf": { "@id": "https://rendobar.com/#website" }
})
}}
/>

Your coding agent can do the whole integration: install the [SDK](/docs/sdk), wire the key from env, submit a job, and verify the result. Paste this into any agent that can fetch a URL:

```text theme={null}
Add Rendobar to my app: read and follow https://rendobar.com/prompts/integrate.md
```

The hosted prompt at [rendobar.com/prompts/integrate.md](https://rendobar.com/prompts/integrate.md) is the same text as the block below and stays current.

## The full prompt

Agent can't fetch URLs? Copy the whole prompt instead:

```md theme={null}
# Add Rendobar to this project

You are integrating Rendobar (https://rendobar.com), a media processing and AI generation API, into this codebase. These instructions supersede anything you remember about Rendobar. Work from the live sources below, not from memory.

Live sources of truth:
- Job catalog: GET https://api.rendobar.com/jobs/types (public, no auth). Per-type parameters: GET https://api.rendobar.com/jobs/types/{type}/schema
- OpenAPI 3.1 spec: https://api.rendobar.com/openapi.json
- Capability map: https://rendobar.com/llms.txt
- Docs text for AI: https://rendobar.com/docs/llms-full.txt (human docs at https://rendobar.com/docs)
- Error reference: https://rendobar.com/docs/support/errors

API key rules, follow exactly:
- I created an API key in the Rendobar dashboard. Ask me to put it in this project's env as RENDOBAR_API_KEY, in a gitignored env file, and wait for my confirmation before running anything that calls the API.
- Never ask me to paste the key into this chat. Never print, log, or commit it. Never put it in client-side code.

Step 0, detect the stack before writing code:
- Inspect the project (package.json, requirements.txt, go.mod, composer.json, Gemfile). JavaScript or TypeScript: use the official SDK, @rendobar/sdk. Anything else: call the REST API directly using the OpenAPI spec above. Same endpoints, same shapes.
- If the project is empty, ask me which stack I want.

Steps (SDK path; mirror with plain HTTP on the REST path):
1. Install @rendobar/sdk. Create the client with createClient({ apiKey: process.env.RENDOBAR_API_KEY }).
2. Read the live job catalog and pick the job types this project needs from what it actually lists. Do not invent job types or parameters.
3. Submit with client.jobs.create({ type, inputs, params }). Media inputs are URLs. Pass an idempotencyKey anywhere a retry could double-submit.
4. Results: client.jobs.wait(job.id) is fine for scripts. For a production server, use webhooks: ask me to add an endpoint at https://app.rendobar.com/webhooks, then verify signatures with verifyWebhook from "@rendobar/sdk/webhooks".
5. Handle errors by machine code (error.code), never message text. INSUFFICIENT_CREDITS: tell me to top up at https://app.rendobar.com/billing. RATE_LIMITED: retry with backoff. Full list in the error reference.
6. Local files: upload through the assets flow (POST https://api.rendobar.com/assets, documented in the docs), then pass the returned asset url as the job input.
7. Definition of done: a runnable check that submits an ffprobe job on https://cdn.rendobar.com/assets/examples/sample.mp4 and prints the result. Read that job type's schema first, its parameters are not the same as every other type. Show me the one command that runs it. On a 401, check both causes before reporting: the key may not be reaching the process env, or the key itself may be invalid for this API (revoked, mistyped, or issued for a different environment such as staging). Tell me which one it is.

Hard rules:
- The API base is https://api.rendobar.com with no version prefix. There is no batch endpoint. One job produces one output.
- Additive changes only. Do not refactor or remove unrelated code.
- When something is ambiguous, choose the smallest default that keeps the app compiling and tell me what you chose. Ask me only when it is a product decision.

If I am talking to you inside an MCP-capable client (Claude, Cursor, and others), also offer to connect Rendobar's MCP server for running jobs in conversation: https://api.rendobar.com/mcp over OAuth, or npx -y @rendobar/mcp with the key read from env. That is separate from the codebase integration above.
```

## Open it in one click

* [Open in ChatGPT](https://chatgpt.com/?q=%23%20Add%20Rendobar%20to%20this%20project%0A%0AYou%20are%20integrating%20Rendobar%20%28https%3A%2F%2Frendobar.com%29%2C%20a%20media%20processing%20and%20AI%20generation%20API%2C%20into%20this%20codebase.%20These%20instructions%20supersede%20anything%20you%20remember%20about%20Rendobar.%20Work%20from%20the%20live%20sources%20below%2C%20not%20from%20memory.%0A%0ALive%20sources%20of%20truth%3A%0A-%20Job%20catalog%3A%20GET%20https%3A%2F%2Fapi.rendobar.com%2Fjobs%2Ftypes%20%28public%2C%20no%20auth%29.%20Per-type%20parameters%3A%20GET%20https%3A%2F%2Fapi.rendobar.com%2Fjobs%2Ftypes%2F%7Btype%7D%2Fschema%0A-%20OpenAPI%203.1%20spec%3A%20https%3A%2F%2Fapi.rendobar.com%2Fopenapi.json%0A-%20Capability%20map%3A%20https%3A%2F%2Frendobar.com%2Fllms.txt%0A-%20Docs%20text%20for%20AI%3A%20https%3A%2F%2Frendobar.com%2Fdocs%2Fllms-full.txt%20%28human%20docs%20at%20https%3A%2F%2Frendobar.com%2Fdocs%29%0A-%20Error%20reference%3A%20https%3A%2F%2Frendobar.com%2Fdocs%2Fsupport%2Ferrors%0A%0AAPI%20key%20rules%2C%20follow%20exactly%3A%0A-%20I%20created%20an%20API%20key%20in%20the%20Rendobar%20dashboard.%20Ask%20me%20to%20put%20it%20in%20this%20project's%20env%20as%20RENDOBAR_API_KEY%2C%20in%20a%20gitignored%20env%20file%2C%20and%20wait%20for%20my%20confirmation%20before%20running%20anything%20that%20calls%20the%20API.%0A-%20Never%20ask%20me%20to%20paste%20the%20key%20into%20this%20chat.%20Never%20print%2C%20log%2C%20or%20commit%20it.%20Never%20put%20it%20in%20client-side%20code.%0A%0AStep%200%2C%20detect%20the%20stack%20before%20writing%20code%3A%0A-%20Inspect%20the%20project%20%28package.json%2C%20requirements.txt%2C%20go.mod%2C%20composer.json%2C%20Gemfile%29.%20JavaScript%20or%20TypeScript%3A%20use%20the%20official%20SDK%2C%20%40rendobar%2Fsdk.%20Anything%20else%3A%20call%20the%20REST%20API%20directly%20using%20the%20OpenAPI%20spec%20above.%20Same%20endpoints%2C%20same%20shapes.%0A-%20If%20the%20project%20is%20empty%2C%20ask%20me%20which%20stack%20I%20want.%0A%0ASteps%20%28SDK%20path%3B%20mirror%20with%20plain%20HTTP%20on%20the%20REST%20path%29%3A%0A1.%20Install%20%40rendobar%2Fsdk.%20Create%20the%20client%20with%20createClient%28%7B%20apiKey%3A%20process.env.RENDOBAR_API_KEY%20%7D%29.%0A2.%20Read%20the%20live%20job%20catalog%20and%20pick%20the%20job%20types%20this%20project%20needs%20from%20what%20it%20actually%20lists.%20Do%20not%20invent%20job%20types%20or%20parameters.%0A3.%20Submit%20with%20client.jobs.create%28%7B%20type%2C%20inputs%2C%20params%20%7D%29.%20Media%20inputs%20are%20URLs.%20Pass%20an%20idempotencyKey%20anywhere%20a%20retry%20could%20double-submit.%0A4.%20Results%3A%20client.jobs.wait%28job.id%29%20is%20fine%20for%20scripts.%20For%20a%20production%20server%2C%20use%20webhooks%3A%20ask%20me%20to%20add%20an%20endpoint%20at%20https%3A%2F%2Fapp.rendobar.com%2Fwebhooks%2C%20then%20verify%20signatures%20with%20verifyWebhook%20from%20%22%40rendobar%2Fsdk%2Fwebhooks%22.%0A5.%20Handle%20errors%20by%20machine%20code%20%28error.code%29%2C%20never%20message%20text.%20INSUFFICIENT_CREDITS%3A%20tell%20me%20to%20top%20up%20at%20https%3A%2F%2Fapp.rendobar.com%2Fbilling.%20RATE_LIMITED%3A%20retry%20with%20backoff.%20Full%20list%20in%20the%20error%20reference.%0A6.%20Local%20files%3A%20upload%20through%20the%20assets%20flow%20%28POST%20https%3A%2F%2Fapi.rendobar.com%2Fassets%2C%20documented%20in%20the%20docs%29%2C%20then%20pass%20the%20returned%20asset%20url%20as%20the%20job%20input.%0A7.%20Definition%20of%20done%3A%20a%20runnable%20check%20that%20submits%20an%20ffprobe%20job%20on%20https%3A%2F%2Fcdn.rendobar.com%2Fassets%2Fexamples%2Fsample.mp4%20and%20prints%20the%20result.%20Read%20that%20job%20type's%20schema%20first%2C%20its%20parameters%20are%20not%20the%20same%20as%20every%20other%20type.%20Show%20me%20the%20one%20command%20that%20runs%20it.%20On%20a%20401%2C%20check%20both%20causes%20before%20reporting%3A%20the%20key%20may%20not%20be%20reaching%20the%20process%20env%2C%20or%20the%20key%20itself%20may%20be%20invalid%20for%20this%20API%20%28revoked%2C%20mistyped%2C%20or%20issued%20for%20a%20different%20environment%20such%20as%20staging%29.%20Tell%20me%20which%20one%20it%20is.%0A%0AHard%20rules%3A%0A-%20The%20API%20base%20is%20https%3A%2F%2Fapi.rendobar.com%20with%20no%20version%20prefix.%20There%20is%20no%20batch%20endpoint.%20One%20job%20produces%20one%20output.%0A-%20Additive%20changes%20only.%20Do%20not%20refactor%20or%20remove%20unrelated%20code.%0A-%20When%20something%20is%20ambiguous%2C%20choose%20the%20smallest%20default%20that%20keeps%20the%20app%20compiling%20and%20tell%20me%20what%20you%20chose.%20Ask%20me%20only%20when%20it%20is%20a%20product%20decision.%0A%0AIf%20I%20am%20talking%20to%20you%20inside%20an%20MCP-capable%20client%20%28Claude%2C%20Cursor%2C%20and%20others%29%2C%20also%20offer%20to%20connect%20Rendobar's%20MCP%20server%20for%20running%20jobs%20in%20conversation%3A%20https%3A%2F%2Fapi.rendobar.com%2Fmcp%20over%20OAuth%2C%20or%20npx%20-y%20%40rendobar%2Fmcp%20with%20the%20key%20read%20from%20env.%20That%20is%20separate%20from%20the%20codebase%20integration%20above.) submits the prompt as soon as the page loads.
* [Open in Cursor](https://cursor.com/link/prompt?text=%23%20Add%20Rendobar%20to%20this%20project%0A%0AYou%20are%20integrating%20Rendobar%20%28https%3A%2F%2Frendobar.com%29%2C%20a%20media%20processing%20and%20AI%20generation%20API%2C%20into%20this%20codebase.%20These%20instructions%20supersede%20anything%20you%20remember%20about%20Rendobar.%20Work%20from%20the%20live%20sources%20below%2C%20not%20from%20memory.%0A%0ALive%20sources%20of%20truth%3A%0A-%20Job%20catalog%3A%20GET%20https%3A%2F%2Fapi.rendobar.com%2Fjobs%2Ftypes%20%28public%2C%20no%20auth%29.%20Per-type%20parameters%3A%20GET%20https%3A%2F%2Fapi.rendobar.com%2Fjobs%2Ftypes%2F%7Btype%7D%2Fschema%0A-%20OpenAPI%203.1%20spec%3A%20https%3A%2F%2Fapi.rendobar.com%2Fopenapi.json%0A-%20Capability%20map%3A%20https%3A%2F%2Frendobar.com%2Fllms.txt%0A-%20Docs%20text%20for%20AI%3A%20https%3A%2F%2Frendobar.com%2Fdocs%2Fllms-full.txt%20%28human%20docs%20at%20https%3A%2F%2Frendobar.com%2Fdocs%29%0A-%20Error%20reference%3A%20https%3A%2F%2Frendobar.com%2Fdocs%2Fsupport%2Ferrors%0A%0AAPI%20key%20rules%2C%20follow%20exactly%3A%0A-%20I%20created%20an%20API%20key%20in%20the%20Rendobar%20dashboard.%20Ask%20me%20to%20put%20it%20in%20this%20project's%20env%20as%20RENDOBAR_API_KEY%2C%20in%20a%20gitignored%20env%20file%2C%20and%20wait%20for%20my%20confirmation%20before%20running%20anything%20that%20calls%20the%20API.%0A-%20Never%20ask%20me%20to%20paste%20the%20key%20into%20this%20chat.%20Never%20print%2C%20log%2C%20or%20commit%20it.%20Never%20put%20it%20in%20client-side%20code.%0A%0AStep%200%2C%20detect%20the%20stack%20before%20writing%20code%3A%0A-%20Inspect%20the%20project%20%28package.json%2C%20requirements.txt%2C%20go.mod%2C%20composer.json%2C%20Gemfile%29.%20JavaScript%20or%20TypeScript%3A%20use%20the%20official%20SDK%2C%20%40rendobar%2Fsdk.%20Anything%20else%3A%20call%20the%20REST%20API%20directly%20using%20the%20OpenAPI%20spec%20above.%20Same%20endpoints%2C%20same%20shapes.%0A-%20If%20the%20project%20is%20empty%2C%20ask%20me%20which%20stack%20I%20want.%0A%0ASteps%20%28SDK%20path%3B%20mirror%20with%20plain%20HTTP%20on%20the%20REST%20path%29%3A%0A1.%20Install%20%40rendobar%2Fsdk.%20Create%20the%20client%20with%20createClient%28%7B%20apiKey%3A%20process.env.RENDOBAR_API_KEY%20%7D%29.%0A2.%20Read%20the%20live%20job%20catalog%20and%20pick%20the%20job%20types%20this%20project%20needs%20from%20what%20it%20actually%20lists.%20Do%20not%20invent%20job%20types%20or%20parameters.%0A3.%20Submit%20with%20client.jobs.create%28%7B%20type%2C%20inputs%2C%20params%20%7D%29.%20Media%20inputs%20are%20URLs.%20Pass%20an%20idempotencyKey%20anywhere%20a%20retry%20could%20double-submit.%0A4.%20Results%3A%20client.jobs.wait%28job.id%29%20is%20fine%20for%20scripts.%20For%20a%20production%20server%2C%20use%20webhooks%3A%20ask%20me%20to%20add%20an%20endpoint%20at%20https%3A%2F%2Fapp.rendobar.com%2Fwebhooks%2C%20then%20verify%20signatures%20with%20verifyWebhook%20from%20%22%40rendobar%2Fsdk%2Fwebhooks%22.%0A5.%20Handle%20errors%20by%20machine%20code%20%28error.code%29%2C%20never%20message%20text.%20INSUFFICIENT_CREDITS%3A%20tell%20me%20to%20top%20up%20at%20https%3A%2F%2Fapp.rendobar.com%2Fbilling.%20RATE_LIMITED%3A%20retry%20with%20backoff.%20Full%20list%20in%20the%20error%20reference.%0A6.%20Local%20files%3A%20upload%20through%20the%20assets%20flow%20%28POST%20https%3A%2F%2Fapi.rendobar.com%2Fassets%2C%20documented%20in%20the%20docs%29%2C%20then%20pass%20the%20returned%20asset%20url%20as%20the%20job%20input.%0A7.%20Definition%20of%20done%3A%20a%20runnable%20check%20that%20submits%20an%20ffprobe%20job%20on%20https%3A%2F%2Fcdn.rendobar.com%2Fassets%2Fexamples%2Fsample.mp4%20and%20prints%20the%20result.%20Read%20that%20job%20type's%20schema%20first%2C%20its%20parameters%20are%20not%20the%20same%20as%20every%20other%20type.%20Show%20me%20the%20one%20command%20that%20runs%20it.%20On%20a%20401%2C%20check%20both%20causes%20before%20reporting%3A%20the%20key%20may%20not%20be%20reaching%20the%20process%20env%2C%20or%20the%20key%20itself%20may%20be%20invalid%20for%20this%20API%20%28revoked%2C%20mistyped%2C%20or%20issued%20for%20a%20different%20environment%20such%20as%20staging%29.%20Tell%20me%20which%20one%20it%20is.%0A%0AHard%20rules%3A%0A-%20The%20API%20base%20is%20https%3A%2F%2Fapi.rendobar.com%20with%20no%20version%20prefix.%20There%20is%20no%20batch%20endpoint.%20One%20job%20produces%20one%20output.%0A-%20Additive%20changes%20only.%20Do%20not%20refactor%20or%20remove%20unrelated%20code.%0A-%20When%20something%20is%20ambiguous%2C%20choose%20the%20smallest%20default%20that%20keeps%20the%20app%20compiling%20and%20tell%20me%20what%20you%20chose.%20Ask%20me%20only%20when%20it%20is%20a%20product%20decision.%0A%0AIf%20I%20am%20talking%20to%20you%20inside%20an%20MCP-capable%20client%20%28Claude%2C%20Cursor%2C%20and%20others%29%2C%20also%20offer%20to%20connect%20Rendobar's%20MCP%20server%20for%20running%20jobs%20in%20conversation%3A%20https%3A%2F%2Fapi.rendobar.com%2Fmcp%20over%20OAuth%2C%20or%20npx%20-y%20%40rendobar%2Fmcp%20with%20the%20key%20read%20from%20env.%20That%20is%20separate%20from%20the%20codebase%20integration%20above.) loads the prompt into the agent. Review it, then run.

Claude has no prefill link. In claude.ai or Claude Code, paste the prompt above, or connect the hosted [MCP server](/docs/mcp-server) at `https://api.rendobar.com/mcp` over OAuth to run jobs straight from the conversation.

## Keep it in your repo

Save the prompt as an agent rule so the context survives past the first session:

* Cursor: `.cursor/rules/rendobar.md`
* Claude Code: add it to `CLAUDE.md` or `AGENTS.md`
* GitHub Copilot: `.github/copilot-instructions.md`

## Install the agent skills

Skill-aware agents such as Claude Code can install Rendobar's skills instead of carrying a prompt:

```bash theme={null}
npx skills add rendobar/agent-skills
```

Skills cover the same integration playbook and update independently of your repo.

## See also

* [MCP server](/docs/mcp-server): run jobs from the chat over OAuth, no API key to copy
* [API quickstart](/docs/quickstart): do the integration by hand in under 5 minutes
* [SDK](/docs/sdk): the TypeScript client the prompt installs
