Start here
1
1. Pick the service that matches the problem
Building editorial content, a blog, or a multi-language site? Start with
AI CMS — it is the service with a full reference today. Storing user uploads
or generated media? Storage. Authenticating your own users? Auth.
Taking money? Payments.
What is Octavia
What each service covers.
2
2. Activate it and pick a plan
Enable the service from Dashboard → Octavia Services, then choose a plan. Every
plan is the same API — the difference is what you are allowed to do before the API
answers
426.Quickstart
The click-by-click version, with screenshots.
3
3. Create a key at the lowest role that works
One key per system. Start with Read-only for anything that only
reads, and raise the role only when a call actually fails with
403.Teams & API keys
Roles, scopes, and rotation.
4
4. Use the SDK, not raw HTTP
Official clients exist for JavaScript, Python, PHP, C# and Go. They send the key
for you, unwrap the envelope, and give you typed results.
All SDKs
Compare the five and pick one.
Pick an SDK, not a language
The five SDKs wrap the same REST endpoints and return the same envelope. They differ only in how the language spells things.Every SDK sends exactly one header,
x-api-key, and none of them expose a way to
add headers. If you find yourself wanting to set a header manually, the answer is in
the gateway, not the client.Put together something real
For AI CMS, the content model has an order. Building it in this order means each step needs only what is above it.Content model
Every resource, its fields, and what it depends on.
API quickstart
Build the whole model in about five minutes.
Before you ship
Four things separate a working demo from an integration that holds up. Handle429 and 426 differently. 429 is transient — back off exponentially
with jitter. 426 means a plan quota is exhausted, and retrying cannot fix it. Putting
them in the same retry loop just burns rate-limit budget.
Set a timeout. The PHP SDK defaults to no timeout, so a hung request will hang
your worker. Set timeoutMs explicitly in every language.
Rate limits & errors
Which failures you can retry, and which you cannot.
Plans
What each plan includes, limit by limit.
total counts the filtered set, not the page. Build the
loop now rather than after the first timeout.
Status codes
Every code and its meaning.
Support
Ask the engineering team.

