Skip to documentation

SYNDERESIS / API OPERATE

Hosted customer API · Contract reviewed 7 November 2026

Limits, usage and billing

On this page

Request size, output length, context, account quota and credit are separate constraints. A larger model context does not override an endpoint's byte or output limit.

Technical limits

Surface Limit or behavior
Answers body 65,536 bytes; larger bodies return 400 invalid_request.
Chat Completions body 921,600 bytes (900 KiB); larger bodies return 400 invalid_request.
Answer question 16,000 characters after trimming; empty questions rejected.
Answer instructions Trimmed and truncated to 16,000 characters.
Answer retrieval query First 8,000 characters of the question.
Joined answer source context At most 16,000 characters; oversized passages can be dropped.
Answers output max_tokens defaults to 1024 and clamps to 1–4096.
Chat answer-adapter output max_tokens defaults to 4096 and clamps to 1–4096.
Transcript/tool chat output Integer 1–32768; default 8192; max_completion_tokens has precedence.
Transcript messages 1–255, including supplied system/developer and tool messages.
Non-empty tool definitions 1–128 unique functions; serialised definitions at most 512 KiB.
Tool-call arguments JSON object encoded as a string; at most 256 KiB per call's argument string.
Source query At most 8,000 characters.
Source results 1–20 requested; default 6.
POST source filter At most 100 IDs, each at most 256 characters.
Active customer/extension keys Up to 10 per account.
Shared inference-only key Lifetime token cap and expiry stored on the key; see below.
Advertised synderesis-spark context 65,536 tokens in model metadata; other request constraints remain in effect.

Byte and character limits differ, especially for non-ASCII text. Budget the actual UTF-8 JSON body, including message and tool-definition overhead. The API does not expose a general input-token-counting endpoint.

Completion budgets may include non-visible reasoning. Very small caps can leave no visible answer; the native handlers reject an empty generated answer. Increase the cap within the documented endpoint range when investigating this case, while retaining a cost budget.

Quotas and rate limits

Customer allowance is enforced across the account, including its keys and browser usage. Pending reservations consume available capacity while a request is in progress.

The one-time free token allocation is counted across periods. It does not refill every month. An eligible paid subscription or complimentary grant releases that free-allocation restriction. Some non-paid accounts also have daily/monthly request limits.

Numeric account limits depend on the provisioned authority and plan; the public customer endpoints do not advertise a universal RPM, TPM or concurrency allowance. Do not infer one from a provider's underlying model limits.

  • 402 free_allocation_exhausted: the starting allocation is used up; use Account to subscribe.
  • 402 insufficient_credit: billable answer-path work lacks credit; add credit in Account.
  • 429 quota_exceeded: a plan/account constraint was reached; check Account and the applicable limit/reset.
  • 429 rate_limited: a request limiter was reached on a route that uses it; wait before retrying.
  • 402 inference_quota_exhausted: a shared inference-only key cannot admit the new request under its lifetime cap.

The reviewed implementation does not promise Retry-After or standard rate-limit response headers on these errors. Use them if present, but your retry logic must work without them. Source search can expose a quota/backend problem as 503; see the reference.

For planned integration volume, obtain account capacity and service arrangements from Synderesis before committing to production throughput. No SLA, guaranteed latency or automatic quota-increase process is established by this guide.

Shared inference-only keys

A shared inference-only key (sk_inf_ prefix, purpose inference_share) can call only POST /v1/chat/completions, POST /v1/answers and GET /v1/models; every other route answers HTTP 403 inference_scope_denied. Paid entitlement and request counters do not apply to it; only its stored lifetime token cap does.

New-request admission refuses a new reservation when the key's stored lifetime cap is zero, or when tokens already counted plus the new reservation would exceed that cap (HTTP 402 inference_quota_exhausted). Counted tokens include pending reservations, and failed or expired reservations without usage, at their full reserved size. The operator issuer stores a cap of 2,000,000 combined input and output tokens. Reported usage above a reservation is still recorded, so the counted total can finish above the cap. The cap is not a provider-side stop.

A new request at or after the key's expiry is refused (HTTP 401 unauthorized). Each provider hop is checked again against the database clock just before it is sent, so a hop that has not been sent is also refused at that instant. A hop that was already sent can finish, and its tokens still count.

Read usage correctly

GET /v1/usage returns lifetime allocation usage, pending reservations, entitlement flags and informational euro credit values. It is account-wide, not a single-key or current-month token total.

A paid account can report zero remaining free tokens while still having access. A returned token count measures API work, not just characters in the final answer. System context, supplied history, retrieved context, passage-selection work and, under automatic selection, the router call can contribute.

There is no universal characters-to-tokens ratio. Some paths use valid provider counts and fall back to bounded estimates when necessary. Do not promise exact cost from a local character count.

Subscription and credit

The current pricing page describes self-service terms: a one-time free allowance, an introductory subscription month where eligible, continuing subscription and credit top-ups. Account is the place to view and manage your actual entitlement and balance.

The public terms reviewed on 6 November 2026 show €1 for the first eligible subscription month, then €5/month, with credit reflecting the settled payment after processor fees and an initial promotional credit. These are self-service subscription terms; they are not a promise of unlimited API usage, a partner integration agreement or an enterprise throughput commitment.

Token tariffs and estimating a request

Customer rates depend on the serving/product route and the applicable tariff. The reviewed source includes standard managed-route tariffs and a separately configurable retrained-checkpoint tariff. Do not infer your enabled tariff or invoice solely from a model alias.

Before a commercial deployment, obtain the applicable input/output rates, currency conversion, tax treatment, rounding, auxiliary-work charges and failure-metering terms. The pricing page and Account should be reconciled with that arrangement.

For an input rate P and output rate C per million tokens:

generation amount = input_tokens × P / 1,000,000 + output_tokens × C / 1,000,000

For illustration only, 1,000 input tokens and 250 output tokens at example rates of USD 1 and USD 2 per million produce USD 0.0015 before other work or adjustments. These example rates are not a quote for your configured service.

Use returned usage and account credit for monitoring, and reconcile material differences with support using request IDs. GET /v1/usage is not an itemised invoice API.

Failures, retries and reservations

Do not assume that a failed request is free. Passage-selection and router work may be metered even when an answer later fails. The transcript/tool path can record a bounded estimate after an ambiguous dispatched generation failure.

A client timeout, a closed connection or an interrupted stream does not establish that no work occurred. Retries can perform and meter additional work. Start with modest output caps, limit concurrency in your own application, and apply the retry guidance.

Read this guide as Markdown