Renderball for AI assistants — build a presentation on renderball.com

# Renderball — build a presentation for your user, no setup

Renderball turns a deck you write into a designed, animated, editable presentation your user finishes in the Renderball editor. You need no account, no key and no setup. Three steps.

Rules: never invent numbers, quotes or claims — the truth check flags anything not in the user's material; ask the user for missing figures. Keep the guest_token from step 1 and send it with every later request. When the deck is ready, give the user deck_url and nothing else.

## 1. Start the deck with the brand you know and your outline. You get the writing brief back.

POST https://renderball.com/api/agent/decks   (JSON body)
{ "brief": "<what the deck is for, who it is for, what it should argue and ask>", "pages": 5, "tone": "<optional>",
  "brand": { "name": "<brand name>", "website": "<their site, optional>", "accent": "#hex, only if you know it", "background": "#hex, optional", "text": "#hex, optional", "fonts": { "headline": "<family, optional>", "body": "<family, optional>" }, "logo_url": "<public https image, optional>", "voice": "<how the brand speaks, optional>" },
  "outline": [ { "label": "…", "description": "…", "visual_concept": "…", "content": { "eyebrow": "…", "headline": "…", "lede": "…", "bullets": ["…"], "caption": "…" } } ] }

The brand is YOURS to state: take colours and fonts from the user's material or their site's stylesheet. Never guess a colour — leave it out, and the deck uses neutral styling. Only the name is required.

Can only open links, not send a body? The same thing as one link: https://renderball.com/api/agent/decks?brief=<brief>&pages=5&brand=<the brand JSON, percent-encoded>&outline=<the JSON array, percent-encoded>

The reply has deck_id, guest_token, deck_url and writing_brief. Every page needs a headline; 1 to 16 pages.

## 2. Write the COMPLETE deck file exactly as writing_brief says, then send it.

POST https://renderball.com/api/agent/decks/<deck_id>/file?guest_token=<guest_token>&wait=45   (body: the file itself, Content-Type: text/plain)

Can only open links? Cut the file into pieces of at most 6000 characters, in order, and send each piece as one link, percent-encoded (every space, newline, quote, brace, plus and percent sign):
https://renderball.com/api/agent/decks/<deck_id>/part?guest_token=<guest_token>&i=1&of=<number of pieces>&data=<piece 1, percent-encoded>
Each reply says what is received and what is missing; the last piece assembles and imports the file. If you can compute base64url, add &enc=b64 and send each piece base64url-encoded — safer than percent-encoding. …/part?guest_token=<guest_token>&reset=1 starts over.

The reply is ready (with deck_url), importing, or failed with the reason — fix the file and send it again.

## 3. If it said importing, check until it is ready.

GET https://renderball.com/api/agent/decks/<deck_id>/status?guest_token=<guest_token>   every 10 seconds

Then give the user deck_url, one link: it shows the deck, and its Edit button signs them in and makes the deck theirs.

Lost the brief? GET https://renderball.com/api/agent/decks/<deck_id>/brief?guest_token=<guest_token>. Have a Renderball API key? Send it as Authorization: Bearer rb_live_… instead of guest_token, and the deck lands in that account with no limits; your user can connect you permanently at https://renderball.com/docs/agents.

## If you can neither make requests nor open links

Give the user this link and Renderball writes the deck from your brief: https://renderball.com/make?brief=<what the deck is for, who it is for, what it should say>&brand=<their website, optional>&pages=5 — write the brief yourself from the conversation: purpose, audience, the argument, the ask, the real figures; percent-encode it.

## Limits

Decks made without an account are limited per day, take a bounded number of imports, and expire after a few days unless the user signs in and claims them.