API
Send usage, read and change your billing data, and read the events your connections landed.
The Verlix API is how your own systems read and change your billing data: your account, customers, products and plans, contracts and pricing, invoices, credit notes, payments, collections, usage, metrics and reports, and the raw events your connections landed. An answer carries only your data and your customer's data, never Verlix's internal bookkeeping.
Base URL and versioning
The base URL is https://api.verlix.ai. Every call is a POST to a /v1 path naming its group, resource and action, with a JSON body. The version is in the path, and a breaking change means a new path rather than a changed response, so an existing integration is never altered underneath itself. Additive fields are not breaking, so a client must ignore properties it does not recognise.
Authentication
Browser sessions authenticate with an HttpOnly cookie that is set at login and never readable from JavaScript. A server-to-server caller exchanges its client id and client secret at /v1/auth/tokens/issue for an access token that lasts one hour and a refresh token that works once, then presents the access token as a Bearer token. The credential names the tenant, never a parameter, so a caller cannot ask for another tenant's data by changing an id.
Rate limits
Limits apply to each API key across every host. Limits per tenant and per route class are not available yet. A throttled request returns 429 with a Retry-After header, and a client should honour that header rather than backing off on a fixed schedule: the value reflects the actual window remaining.
| Status | Meaning | What a client should do |
|---|---|---|
| 200 / 201 | Success | Read the body; ignore unknown fields |
| 400 | The request was invalid | Fix the request; retrying will not help |
| 401 / 403 | Not authenticated, or not permitted | Re-authenticate, or ask for the scope |
| 409 | The record changed since you read it, or its state refuses the change | Read it again before you resend |
| 429 | Rate limited | Wait for Retry-After, then retry |
| 503 | A dependency is unavailable | Safe to retry with backoff |
Money and numbers
Money crosses the wire as a decimal string, never as a floating-point number, and it is never re-parsed on the way through. A price on a plan or a rule keeps its full precision and is rounded only when an invoice line is calculated; an amount on a document carries exactly 2 places, rounded once at that calculation. A client that parses a money string into a float and adds 2 of them has left the guarantee behind.
The agent surface
Agent access is not available yet: no action group describes these endpoints for an assistant to call.