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.fr a 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