REST API (/v1) quickstart

API keys, scopes, and the core endpoints.

Written by the Krevaya team · Updated August 1, 2026

Everything the dashboard does runs through the same pipeline the public API exposes — personas, voice memory, quality pass, safety screening, and caps all apply.

Keys

Create keys in Settings → API keys. They look like krv_...; send as Authorization: Bearer krv_... (or X-API-Key). Scopes: read, publish, generate. Up to 10 active keys; the secret is shown once, at creation. Key management stays in the dashboard — a key can never mint keys.

Core endpoints


GET  /v1/me                              # key check: account + scopes

GET  /v1/posts?status_filter=draft       # your queue

POST /v1/posts                           # {"platform","body","hashtags"?,"schedule_at"?}

POST /v1/generate                        # {"url"? | "text"?, "instruction"?}

  • POST /v1/posts without schedule_at creates a draft for review; a future ISO-8601 time schedules it directly (needs publish scope).
  • POST /v1/generate turns a YouTube/article URL or pasted text into drafts via the repurpose pipeline (needs generate scope).

Platforms: facebook | instagram | threads | linkedin | bluesky.

Media (media scope)


GET    /v1/assets                # library + storage usage

POST   /v1/assets                # {"url"} -> fetch into the library

POST   /v1/assets/upload         # raw image bytes (Content-Type: image/*)

POST   /v1/assets/upload/init    # chunked video: {"filename","size_bytes"}

PUT    /v1/assets/upload/part    # ?upload_id&index — raw 8 MiB parts

POST   /v1/assets/upload/finish  # {"upload_id","parts"}

DELETE /v1/assets/{id}

Attach media via asset_ids on POST /v1/posts with a kind (text | image | carousel | reel); each platform's rules are validated with corrective errors. brand_id targets a specific brand — its voice, design, and routing apply.

API-submitted copy passes the same safety screening as LLM output, and generation respects your daily caps and plan limits.

Did this answer your question?