Last updated 2026-10-25
Quickstart
The short way: the command line
npx kinsy-cli login # once: a code appears, you confirm it on kinsy.ai
npx kinsy-cli create "Q3 board update for a 40-person SaaS company: revenue, churn, hiring plan, two asks for the board." \
--file q3-metrics.csv --slides 10 --wait --out board.pptx
One to two minutes later board.pptx is on disk and the printed link opens the same deck on kinsy.ai. Every command and flag is on the command line page; agents get the same thing as a skill.
The long way: four calls with curl
Create a key, start a deck, poll until it is done, download the file. Everything below works from a terminal with curl and jq.
1. Create a key
Sign in at kinsy.ai, open Settings → API keys, and create a key. Copy it straight away; it is shown only once.
export KINSY_API_KEY="ksy_live_…"
2. Start a deck
curl -s -X POST https://kinsy.ai/v1/decks \
-H "Authorization: Bearer $KINSY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"brief": "Q3 board update for a 40-person SaaS company: revenue, churn, hiring plan, two asks for the board.",
"slides": 10
}'
The call answers within two seconds:
{
"deck_id": "deck-7f3a1c",
"status": "queued",
"status_url": "https://kinsy.ai/v1/decks/deck-7f3a1c",
"created_at": "2026-10-25T09:12:04+00:00",
"credits_charged": 40
}
To build from documents, pass their text as sources (extract a file first with POST /v1/files):
-d '{
"brief": "Summarise the attached report for the leadership team.",
"sources": [{"name": "report.pdf", "text": "…extracted text…"}],
"slides": 12
}'
By default the builder asks itself the questions it would normally ask you (audience, tone, emphasis) and picks sensible answers. Pass "answers": {"audience": "the board"} to decide any of them yourself, or "intake": "skip" to skip the questions altogether.
3. Poll until it is done
until [ "$(curl -s https://kinsy.ai/v1/decks/deck-7f3a1c \
-H "Authorization: Bearer $KINSY_API_KEY" | jq -r .status)" = "done" ]; do
sleep 5
done
While it runs, the status call reports status (queued, running, done or error), phase, progress from 0 to 1, and slides_rendered of slides_total. A finished deck usually takes one to two minutes.
4. Download the deck
curl -L -o board-update.pptx https://kinsy.ai/v1/decks/deck-7f3a1c/files/pptx \
-H "Authorization: Bearer $KINSY_API_KEY"
The file route answers with a redirect to a signed download link. Add ?redirect=false to get the link as JSON instead (useful when your HTTP client does not follow redirects, or when you want the filename). The done status also carries both links under artifacts.
Open the file in PowerPoint: every text box, table and chart is editable, and the fonts travel with the deck.
5. Change a slide
curl -s -X POST https://kinsy.ai/v1/decks/deck-7f3a1c/edits \
-H "Authorization: Bearer $KINSY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"slide": 3, "instruction": "Tighten the headline and cut the bullets to three."}'
Slides are numbered from 1. An edit costs 5 credits, plus 10 when the slide gets a new picture. If the instruction is too ambiguous to carry out faithfully, the response carries a clarify question instead of a changed slide and nothing is charged.
Retrying safely
Send an Idempotency-Key header with POST /v1/decks. A retry with the same key within 24 hours returns the first response again and charges nothing; the response carries Idempotent-Replayed: true.