> ## Documentation Index
> Fetch the complete documentation index at: https://docs.juryo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# HTTP API

> Talk to your agent from any system through the sessions API

The same `pk_live_…` key from your **Widget (API)** channel authorizes direct
calls to the agent's HTTP API — useful for custom integrations (your own
forms, internal systems, other bots). The web widget uses exactly this API
under the hood.

* **Base:** `https://agents.juryo.ai`
* **Authentication:** `Authorization: Bearer pk_live_…` header

<Note>
  The key identifies your firm as the tenant. Any system presenting it can
  start conversations with your agent — the same way any visitor to your site
  can open the widget.
</Note>

## Start a session

```bash theme={null}
curl -X POST https://agents.juryo.ai/eve/v1/session \
  -H 'Authorization: Bearer pk_live_YOUR_KEY' \
  -H 'content-type: application/json' \
  -d '{"message": "Hi, I need information about a claim."}'
```

The response carries two values you'll reuse:

* the session id, in the `x-eve-session-id` header
* a `continuationToken` in the JSON body, to continue the conversation

## Stream the reply

The session emits NDJSON events (`application/x-ndjson`) while the agent
works:

```bash theme={null}
curl https://agents.juryo.ai/eve/v1/session/SESSION_ID/stream \
  -H 'Authorization: Bearer pk_live_YOUR_KEY'
```

The main events are `session.started`, `message.completed` (the agent's
reply) and `session.completed`. Clients that don't render incremental text can
ignore the `*.appended` events and rely on the `*.completed` ones.

## Send a follow-up message

When the session is waiting for the next user message:

```bash theme={null}
curl -X POST https://agents.juryo.ai/eve/v1/session/SESSION_ID \
  -H 'Authorization: Bearer pk_live_YOUR_KEY' \
  -H 'content-type: application/json' \
  -d '{"continuationToken": "TOKEN", "message": "It was a traffic accident."}'
```
