Skip to content
SparQ

Developers

Ship an agent this week. Keep it for years.

One versioned contract, typed from the same source the API is built from. No provider keys, retries or token counting in your code, and no rewrite when the model underneath changes.

An action button, end to end: one call, one typed result
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 }'

For developers

A screenful of code to a governed agent.

One versioned contract, REST and server-sent events. Callers are identified by your own users' sign-in tokens or a project key.

TypeScript: send a message and render the stream, typed from the contract
import type { Schema } from "@sparq/client";

type StreamEvent = Schema<"StreamEvent">;

const res = await fetch(`${SPARQ_URL}/v1/sessions/${sessionId}/messages`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${user.idToken}`,
    Accept: "text/event-stream",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ text: "Where is my refund for order 1042?" }),
});

for await (const event of readEvents<StreamEvent>(res)) {
  if (event.type === "token") render(event.text);
  if (event.type === "approval_required") ask(event.approval);
}
The same answer on the wire: stream events over SSE
POST /v1/sessions/{session_id}/messages
Accept: text/event-stream

id: 1
data: {"type":"run_started","agent":{"name":"support","version":"1.4.0"},...}

id: 4
data: {"type":"tool_started","tool":"orders.lookup",...}

id: 9
data: {"type":"citation","source":{"title":"Refund policy",...}}

id: 12
data: {"type":"token","text":"Your refund was issued on"}

id: 31
data: {"type":"completed","usage":{"estimated_cost_usd":"0.0042",...}}

Three ways to use an agent

  • 1Chat panelOpen a session, send messages, render the stream: tokens, plans, tool progress, citations, questions and approval cards.
  • 2Action buttonStart a run and wait for it. You get back one typed result that matches the agent's declared output.
  • 3Background jobStart a run without waiting, then follow its stream from any process and resume after a pause.

What happens on every request

  1. 1Your application calls its ProjectOne stable endpoint and contract: REST and server-sent events, versioned, with breaking changes checked in CI. Callers are identified by your own sign-in tokens or a project key.
  2. 2SparQ resolves who is askingThe verified user, your customer, the environment and the live Release are bound into an immutable context. The agent is authorized, and the budget is reserved before anything runs.
  3. 3Agents run inside a governed harnessModels are reached through the Frontier Gateway by class, never by name. Your tools are reached through the tool gateway. The agent pauses for a person when an action needs approval.
  4. 4Everything is recordedEach model call lands in the usage ledger with the credential that caused it. Each action lands in a hash-chained audit log. Traces carry no prompt content unless your policy allows it.

Onboarding

From nothing to live in five steps, with no change to SparQ.

The same five steps for every application. If one of them ever needs a SparQ code change, we treat it as a defect in the contract.

  1. 1

    Create the Project

    Choose its environments, register your sign-in issuers, and set budgets and residency.

    Early access
  2. 2

    Issue credentials

    One per consuming service or team, bound to one environment, shown once.

    Early access
  3. 3

    Expose your tools

    Run an MCP server, or import read operations from your OpenAPI document.

    Next release
  4. 4

    Publish a Release

    Agents, skills and workflows as specs, with the evaluation suites that guard them.

    Next release
  5. 5

    Embed and go live

    Add the client to your app and switch on once the isolation probes pass.

    Next release

Give your next AI feature a contract that outlives the model.

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.