How ManticScore streams real-time progress events over HTTP using newline-delimited JSON, with cursor-based replay and forward-compatible event parsing.
ManticScore uses newline-delimited JSON (NDJSON) to stream progress events for all long-running operations — market research, feature deep research, build graphs, Forge coding runs, briefs, and chat. Instead of polling for results, your client opens a persistent HTTP connection and receives events line by line as work progresses.
Each line in the response body is a complete JSON object with this envelope:
{"v": 1, "event": "<type>", "data": {...}}
The v field is the protocol version. The event field identifies the event type. The data object contains the payload for that event type.
Parse on the event field and ignore unknown event types. New event types may be added to any stream, and forward-compatible clients should skip them silently.
Every streaming endpoint accepts a cursor query parameter (default 0). Pass the seq number of the last event you received to resume a stream without re-reading events you have already processed.
GET /research/{job_id}/events?cursor=12
The server replays all events with a sequence number greater than cursor, then continues streaming live events. This means you can reconnect after a network drop without losing any events.
Store the seq field from each incoming event. On reconnect, pass the highest seq you received as cursor.