Overview
The Inklura Platform API exposes the platform's business domains (products, orders, clients,
invoices, campaigns, and many more) over one surface: tRPC. Every procedure is reachable
at /api/trpc/<router>.<procedure>.
Base URL
https://manage.inklura.fr
All examples on this page use that host. See Environments for the other apps on the platform.
Request & response format
tRPC is mounted at /api/trpc and accepts both GET and POST. Serialization uses
superjson: inputs are wrapped as {"json": <value>}, and the response payload is at
result.data.json.
| Procedure kind | HTTP verb | Input |
|---|---|---|
| Query | GET |
?input={"json":<value>} (URL-encoded) |
| Mutation | POST |
request body {"json":<value>} |
Query (GET)
A query passes its input in the URL. Here, auth.getSession takes no input, so ?input= is
omitted:
curl "https://manage.inklura.fr/api/trpc/auth.getSession" \
-H "Authorization: Bearer $INKLURA_TOKEN"
A query that takes input encodes a superjson envelope in ?input=:
curl -G "https://manage.inklura.fr/api/trpc/products.getById" \
-H "Authorization: Bearer $INKLURA_TOKEN" \
--data-urlencode 'input={"json":{"id":"<product-id>"}}'
The response puts the result under result.data.json:
{
"result": {
"data": {
"json": { "id": "<product-id>", "name": "…" }
}
}
}
When the result contains values JSON cannot represent directly (dates, for example),
superjson adds a meta object next to json. A superjson client decodes it for you.
Mutation (POST)
A mutation sends its input as the JSON body, again wrapped in {"json":<value>}:
curl -X POST "https://manage.inklura.fr/api/trpc/clients.create" \
-H "Authorization: Bearer $INKLURA_TOKEN" \
-H "Content-Type: application/json" \
-d '{"json":{"name":"Acme SARL","email":"contact@acme.example"}}'
The response has the same result.data.json shape. See tRPC Procedures
for a @trpc/client example and the full calling conventions.
Batching
The endpoint accepts the standard tRPC batch protocol, so a client configured with
httpBatchLink can group several calls into one HTTP request. Queries can also be sent as
POST (method override is enabled). See tRPC Procedures.
Tenancy
Inklura is multi-tenant. Every call runs within a tenant and a site:
- Your token names your account's home tenant and site; the
scope is resolved on each request. That is what makes
manage.inklura.fra single endpoint for every tenant. - Before every call to a protected procedure, the platform checks the scope against your
account's access (its home tenant, its memberships, or platform administration). A scope you
cannot access is rejected with
FORBIDDEN.
Tenant data carries a tenantId, and the API filters calls on the resolved scope. See the
Data Model.
Where to next
| Page | What it covers |
|---|---|
| Sessions & Tokens | Credential resolution order, tenant/site scope |
| tRPC Procedures | Access levels, calling conventions, router catalog |
| REST Endpoints | Why the API is tRPC only, and the other HTTP routes |
| Data Model | Multi-tenancy and the main entities |
| Errors & Rate Limits | Error envelope, codes, and feature-scoped limits |
| Pagination & Filtering | How list procedures paginate |