flue-eve

HTTP API Reference

All routes are mounted under the configured eveMount (default: /eve/v1).

GET /eve/v1/health

Health check. Returns server status.

Response 200 OK

{
  "ok": true,
  "status": "ready",
  "workflowId": "wf_compat"
}

GET /eve/v1/info

Server and agent metadata.

Response 200 OK

{
  "agent": {
    "name": "assistant",
    "model": "anthropic/claude-sonnet-4-6"
  },
  "tools": [
    {
      "name": "lookup_order",
      "description": "Look up an order by ID",
      "parameters": {
        "type": "object",
        "properties": {
          "orderId": { "type": "string" }
        },
        "required": ["orderId"]
      }
    }
  ],
  "connections": []
}

When connections are configured, tools includes connection__* entries:

{
  "tools": [
    {
      "name": "connection__linear_search",
      "description": "Search Linear issues",
      "parameters": { /* ... */ }
    }
  ]
}

POST /eve/v1/session

Create a new session.

Request body

{
  "message": "Hello, world!",
  "agent": "assistant",
  "outputSchema": {
    "type": "object",
    "properties": {
      "answer": { "type": "string" }
    }
  },
  "clientContext": {
    "userId": "user-123",
    "tier": "pro"
  }
}
FieldTypeRequiredDescription
messagestringYesThe user's message
agentstringNoAgent name (uses default if omitted)
outputSchemaobjectNoJSON Schema for structured output
clientContextobjectNoArbitrary context for the agent

Response 202 Accepted

{
  "sessionId": "ses_abc123",
  "continuationToken": "tok_xyz789"
}

Headers:

x-eve-session-id: ses_abc123

The session starts streaming immediately. Connect to GET /session/:id/stream to receive events.

POST /eve/v1/session/:sessionId

Send a follow-up message to an existing session (multi-turn conversation).

Headers

Authorization: Bearer <continuationToken>

Request body

{
  "message": "Tell me more",
  "agent": "assistant",
  "continuationToken": "tok_xyz789",
  "outputSchema": { /* ... */ },
  "inputResponses": { "approved": true }
}
FieldTypeRequiredDescription
messagestringNoThe user's message (omitted for HITL resume)
agentstringNoAgent name (optional per-turn routing)
continuationTokenstringYesToken from the session response
outputSchemaobjectNoJSON Schema for structured output
inputResponsesobjectNoHITL input responses (resume from park)

Response 200 OK

{
  "sessionId": "ses_abc123",
  "continuationToken": "tok_xyz789"
}

Error responses

CodeMeaning
409Stale continuationToken — turn is still active
410Terminal session — cannot accept more messages
404Session not found

GET /eve/v1/session/:sessionId/stream

Stream events for a session. Returns NDJSON (application/x-ndjson; charset=utf-8).

Query parameters

ParameterTypeDescription
startIndexnumberReplay from this journal index (optional)

Response headers

content-type: application/x-ndjson; charset=utf-8
x-eve-stream-format: ndjson
x-eve-stream-version: 16
cache-control: no-cache
connection: keep-alive

Response body (NDJSON, one JSON event per line)

{"type":"session.started","data":{}}
{"type":"agent.start","streamIndex":0}
{"type":"agent.content.delta","data":{"text":"Hello"},"streamIndex":1}
{"type":"agent.content.delta","data":{"text":"!"},"streamIndex":2}
{"type":"message.appended","data":{"id":"msg_1","role":"assistant","content":"Hello!"},"streamIndex":3}
{"type":"agent.complete","streamIndex":4}
{"type":"session.waiting","streamIndex":5}

Error responses

CodeMeaning
400Invalid startIndex (negative or NaN)
404Session not found

Error response format

All errors follow the same shape:

{
  "error": {
    "code": "session_not_found",
    "message": "Session ses_abc123 not found"
  }
}

See error reference for the complete error catalog.