Skip to main content

API Reference

Base URL

https://api.travila.ai

Request Format

All endpoints are accessed through the KrakenD API gateway using REST-style paths:

POST /api/v1/<domain>/<service>/<method>
Content-Type: application/json

For example:

curl -X POST https://api.travila.ai/api/v1/llm/gateway/send-message \
-H "X-API-Key: sk_your_key_here" \
-H "X-On-Behalf-Of: user_123" \
-H "Content-Type: application/json" \
-d '{
"conversation_key": "conv_abc",
"user_message": {
"role": "ROLE_USER",
"content": [{ "type": "CONTENT_PART_TYPE_TEXT", "content": "Hello" }]
}
}'

Request and response bodies use protojson encoding (JSON representation of Protocol Buffer messages).

Authentication

Every request must include one of:

MethodHeaderUse Case
Secret keyX-API-Key: sk_... + X-On-Behalf-Of: <user-id>Backend-to-backend
Publishable key + JWTX-API-Key: pk_... + Authorization: Bearer <user-jwt>Client apps

A dashboard sign-in JWT is an account-administration credential, not an API credential — don't authenticate an application with one.

User impersonation

HeaderRequiredDescription
X-On-Behalf-Of: <user-id>Required when a backend secret key (sk_*) acts on behalf of a specific user, including on create-threadScope users:impersonate must be granted to the key

See Authentication & API Keys for methods, scopes, rotation, and code examples.

API Services

APIBase PathRPCsDescription
LLM APIs/api/v1/llm/gateway/31Threads, messages, message feedback, MCP tools, memories, voice sessions (in progress)
Storage APIs/api/v1/storage/gateway/15Per-user file storage, upload/download URLs
End User APIs/api/v1/enduser/5End-user profile self-service — location, locale, default generation config, metadata
Notification APIs/api/v1/notifications/46Push, inbox, preferences, send, topics, subscribers, workflows, providers
Scheduler APIs/api/v1/scheduler/10Scheduled jobs — cron, one-shot, and recurring-interval schedules; execution history
Webhook APIs/api/v1/webhooks/9Outbound webhooks — endpoints, subscriptions, delivery history and retries

Total: 116 RPCs across 6 services.

Postman collection

Every endpoint above, ready to import:

Import both, select the Travila Platform environment, and set apiKey. Auth is configured once on the collection, so every request inherits it — set jwt as well when using a publishable (pk_*) key, and onBehalfOf when a secret key acts for a specific user. Both headers are only attached when their variable is non-empty.

Request bodies are generated from the same OpenAPI specs that produce this reference, so every field is present with a typed placeholder ("<string>", "<integer>") rather than a real value. The shape is correct; replace the contents before sending, and drop optional fields you don't need. For enum fields the placeholder doesn't name the allowed values — check the endpoint page here for the accepted set.

note

The collection is regenerated from the specs on every docs build, so it can't drift from this reference. It is not hand-maintained — an endpoint appears here and in Postman at the same time.