Developers
One contract instead of a model zoo.
- REST and server-sent events, versioned, with breaking changes caught in CI
- Typed clients generated from the same contract the API is built from
- No provider keys, retries or token counting in your code
Platform
Most teams stitch an agent together from a model SDK, a vector store, a queue and a dashboard, then rebuild it for the next product. SparQ gives every agent the same five chapters, under the same rules, in one place.
The life of an agent
Five chapters every agent goes through. SparQ is the one place all five happen, under the same rules.
An agent on SparQ is a specification stored as data: its job, its instructions, the class of model it needs, the tools it may call, the skills it can load and the actions that must wait for a person. Your developers write it once; your product owners can change it later without a code release.
Most AI features serve more than one customer. SparQ is built for that from the first table: every row carries the workspace, the project, the client and the environment, and the database itself refuses to show one client's data to another.
A chat panel that streams its answer, an action button that returns one typed result, or a background job that runs while nobody watches. All three use the same contract, your own users' sign-in, and the same pause when an action needs a person.
Every model call is one row in a usage ledger with the client, agent, model class and credential that caused it. Every action is one record in an append-only audit chain. Budgets are reserved before a call is sent, so a looping agent stops at its limit instead of at your invoice.
Agents ask for a class of model, never a model by name. When a better or cheaper model arrives, the change is a new Release of your Project: evaluated against your own test suites, approved by a second person, promoted as a whole, and rolled back in one step if it disappoints.
Who it is for
Developers
Platform and security teams
Product and business owners
Compliance and legal
The catalogue
Each capability carries its availability. Open one to see how you use it.
One governed way to call any model. Agents ask for a class of model (fast, standard, reasoning, code, embed, rerank or vision), and the gateway chooses the deployment.
curl https://api.sparqhq.ai/v1/admin/model-classes \
-H "Authorization: Bearer $SPARQ_KEY"Built for applications that serve many customers. Each of your customers is a client inside your Project, with its own data, memory, traces and budget, isolated by design.
curl -X PUT https://api.sparqhq.ai/v1/admin/audience-tenants/$CLIENT_ID/compliance-profile \
-H "Authorization: Bearer $SPARQ_KEY" \
-H "Content-Type: application/json" \
-d '{ "audience_tenant_id": "'$CLIENT_ID'", "version": 1,
"data_regions": ["eu"], "allowed_providers": ["azure-openai"] }'Every model call is one ledger row with every dimension you need to attribute it: workspace, project, client, agent, model class, credential, tokens and cost.
curl "https://api.sparqhq.ai/v1/admin/usage/report?group_by=audience_tenant&group_by=model_class" \
-H "Authorization: Bearer $SPARQ_KEY"Every request records the credential that made it. Audit records are append-only, chained by hash per workspace, and written in the same transaction as the action they describe.
curl "https://api.sparqhq.ai/v1/admin/audit?credential_id=$CREDENTIAL_ID" \
-H "Authorization: Bearer $SPARQ_KEY"End-user features such as file uploads, web search or memory are switched on and off at six levels: platform, workspace, project, client, user and conversation.
curl "https://api.sparqhq.ai/v1/admin/feature-settings/project?scope_id=$PROJECT_ID" \
-H "Authorization: Bearer $SPARQ_KEY"Agents are specifications stored as data, not code: job, instructions, model class, tools, skills, limits and the actions that need approval.
curl -X POST https://api.sparqhq.ai/v1/runs \
-H "Authorization: Bearer $USER_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "agent": "ticket-triage", "input": { "ticket_id": "T-1042" }, "wait": true }'SparQ never runs your code. Your services expose tools over MCP, or SparQ imports operations from your OpenAPI document, and every call passes the tool gateway.
# Public keys for delegated tool tokens
curl https://api.sparqhq.ai/.well-known/jwks.jsonCollections of documents that agents search by name: hybrid search over vectors and full text, with citations on every answer.
curl -X POST https://api.sparqhq.ai/v1/admin/collections/$COLLECTION_ID/search \
-H "Authorization: Bearer $SPARQ_KEY" \
-H "Content-Type: application/json" \
-d '{ "query": "refund policy for annual plans" }'Agents stop to ask a question or to request approval, and resume later in any process. Writes and destructive actions always wait for a person.
curl -X POST https://api.sparqhq.ai/v1/approvals/$APPROVAL_ID \
-H "Authorization: Bearer $USER_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "decision": "approve", "comment": "Refund confirmed with the customer" }'A Release is an immutable bundle of a Project's configuration: models, instructions, agents, tools, guardrails, knowledge and the evaluation baseline. It is promoted and rolled back as a whole.
curl -X POST https://api.sparqhq.ai/v1/admin/projects/$PROJECT_ID/rollback \
-H "Authorization: Bearer $SPARQ_KEY" \
-H "Content-Type: application/json" \
-d '{ "environment": "prod", "to_release_id": "'$PREVIOUS_RELEASE_ID'",
"reason": "Answer quality dropped after the last Release" }'OpenTelemetry traces with the GenAI conventions, sent to the tools you already run: Grafana, Langfuse, Datadog, Azure Monitor or any OTLP backend.
curl "https://api.sparqhq.ai/v1/admin/traces?project_id=$PROJECT_ID" \
-H "Authorization: Bearer $SPARQ_KEY"A typed TypeScript client with streaming, a React chat kit with approval and question cards, and a Python SDK for specs, drafts and local evaluation runs.
import type { Schema } from "@sparq/client";
function render(event: Schema<"StreamEvent">) {
if (event.type === "token") append(event.text);
if (event.type === "approval_required") showApproval(event.approval);
}Tell us what you are building. We will show you SparQ on your use case and your residency rules.
Early access: Built and tested. Available to early-access workspaces.