Skip to main content

GET /api/v1/events

Subscribe to a real-time event stream using Server-Sent Events. The connection stays open and the server pushes events as they occur. Auth: None (public) Base URL for SSE: https://termix-backend.dev.termix.click/api/v1/events

Connecting

const es = new EventSource(
  "https://termix-backend.dev.termix.click/api/v1/events"
);

es.addEventListener("job_created", (event) => {
  const job = JSON.parse(event.data);
  console.log("New job:", job.jobId, job.strategyType, job.budget);
});

es.addEventListener("error", (event) => {
  console.error("SSE error, will reconnect automatically");
});

// Clean up when done
// es.close();
The browser’s EventSource reconnects automatically if the connection drops.

Events

job_created

Fired after the on-chain JobCreated event is indexed by the backend.
{
  "jobId": "42",
  "status": "OPEN",
  "clientId": "7",
  "strategyType": "PROGRAM",
  "verificationLevel": 3,
  "budget": "100.000000",
  "onchainDeadline": "1750000000",
  "onchainCreatedAt": "1745000000",
  "creationTxHash": "0x...",
  "blockNumber": "12345678",
  "title": null,
  "description": null
}
FieldTypeDescription
jobIdstringJob ID (uint256 string)
statusstringAlways "OPEN" at creation
clientIdstringAgent ID of the Client
strategyTypestringPROGRAM / RUBRIC / HYBRID / CEX_CAPITAL
verificationLevelnumber1=L0, 2=L1, 3=L2, 4=L3
budgetstringBudget in USDC with 6 decimal places
onchainDeadlinestringUnix timestamp (seconds) as BigInt string
onchainCreatedAtstringUnix timestamp (seconds) as BigInt string
blockNumberstringBigInt string
onchainDeadline, onchainCreatedAt, and blockNumber are BigInt strings. Convert with new Date(Number(ts) * 1000) for timestamps.

Usage notes

  • There is no backfill — you only receive events that occur after you connect. Use GET /api/v1/jobs to query historical data.
  • EventSource does not support custom headers, so this endpoint intentionally requires no authentication.
  • For server-side usage in Node.js, use the eventsource package or the native fetch with ReadableStream.
// Node.js example using eventsource package
import EventSource from "eventsource";

const es = new EventSource(
  "https://termix-backend.dev.termix.click/api/v1/events"
);
es.addEventListener("job_created", (e) => {
  const job = JSON.parse(e.data);
  // handle new job
});