Base URL
https://api.verba.ink
Quick start
Pick a character
Use your character vanity slug or vanity URL (for example
mycharacter_abc or https://verba.ink/v/mycharacter_abc).Authentication
Send your API key in either header:Authorization: Bearer vka_...x-api-key: vka_...
401.
Character identifier
Both endpoints usecharacter (not verb_id).
Accepted formats:
- Vanity slug:
mycharacter_abc - Vanity path:
/v/mycharacter_abc - Full vanity URL:
https://verba.ink/v/mycharacter_abc
Endpoints
POST /v1/responsefor text chat completionsPOST /v1/imagefor image generation
POST /v1/response
Text completion endpoint. You can optionally attach image URLs for vision-enabled prompting.
Supports both standard JSON and streaming. Set
stream: true to receive Server-Sent Events (SSE) chunks.Streaming on
/v1/response is available for Plus, Pro, and Ultra plans.characterstring (vanity URL or vanity slug)messagesarray (role+content)
session_idstringtemperaturenumber (0..2)top_pnumber (0..1)max_tokensnumberstreamboolean (truefor SSE stream, defaultfalse)image_urlsarray of image URLs (http/https, max 4)
messages[].content supports:
- String text content
- Array parts with:
{ "type": "text", "text": "..." }{ "type": "image_url", "image_url": { "url": "https://..." } }
messages[].content or top-level image_urls (both are merged, max 4 total).
Request examples
Vision input example
Example response
Streaming (stream: true)
With stream: true, /v1/response returns text/event-stream and emits data: events.
- Each event is an OpenAI-style
chat.completion.chunkpayload. - The final event is
data: [DONE]. - You should concatenate
choices[0].delta.contentchunks to build the assistant message. - Free plans return
403 stream_plan_upgrade_requiredwhenstream: trueis used.
Streaming request examples
POST /v1/image
Generates one image URL.
Required:
characterstring (vanity URL or vanity slug)promptstring
session_idstringimage_urlsstring array (reference images)size(1024x1024only)response_format(urlonly)
Request examples
Example response
Sessions and memory
session_idis optional.- If omitted, Verba generates one and returns it.
- Reusing the same
session_idpreserves API conversation context for that caller + verb pair. - API memory is stored in conversation history only (not DM or message logs).
Access, billing, and limits
- API access is available to all users.
- Verb privacy still applies:
- Private characters: owner only
- Public characters: any API caller
- Billing and tier/model enforcement are applied to the character owner account.
/v1/*uses account rate limits via the same per-user limiter model.
Message format (/v1/response)
messagesmust be an array.- Include at least one
usermessage. - Allowed roles:
user,assistant,system(assistantmaps internally to model role). messages[].contentsupports text andimage_urlparts.- Top-level
image_urlsis also supported. - Combined image URL limit is 4.
Error model
Errors return JSON with a top-levelmessage and an error object.
error.type: stable machine-readable error type (for program logic)error.code: HTTP status code
401 invalid_api_keyfor missing/invalid/revoked API key403 verb_access_deniedfor private character access by non-owner403 stream_plan_upgrade_requiredwhen free plans requeststream: true403 insufficient_creditswhen the character owner has no credits for the selected model400 invalid_streamwhenstreamis not a boolean400 invalid_image_urlswhen image URL payload format is invalid400 blocked_image_urlwhen image URL targets local/private network hosts400 too_many_image_urlswhen more than 4 image URLs are provided400 invalid_sizewhen/v1/imagesize is not1024x1024

