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

# Condition

> Identity as a prompt artifact you can inject into any model you already run.

## What this family does

Conditioning is the route for wiring Exo into an agent you own. Instead of raw facts, it returns a composed system prompt that makes your model reason and sound like the subject, plus a voice hint measured from their own writing and a short list of recent organization activity worth folding into context.

`POST /v1/condition/scaffold` is the variant for agents that assemble their own prompts: it wraps one prompt in the subject's cognitive scaffold and returns the focal nodes that shaped it.

## Routes

| Method | Path                                                                         | Scope  | What it does             |
| ------ | ---------------------------------------------------------------------------- | ------ | ------------------------ |
| `POST` | [`/v1/condition/scaffold`](/api-reference/condition/post-condition-scaffold) | `read` | Scaffold a prompt        |
| `POST` | [`/v1/condition/session`](/api-reference/condition/post-condition-session)   | `read` | Compose a session prompt |

## Headers that apply here

Neither header is declared as an OpenAPI parameter, so neither appears in the generated schema tables.

* **`X-Exo-Subject`** selects which subject the call acts for on the subject-aware routes above. Omit it to act as the key owner. See [Subjects](/api-reference/subjects).

## The shape of a call

Compose a session prompt.

<CodeGroup>
  ```bash cURL theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
  curl -X POST https://api.get-exo.com/v1/condition/session \
    -H "X-Exo-API-Key: $EXO_KEY" \
    -H "Content-Type: application/json" \
    -d '{"orgId": "0d5b7c92-3a41-4e88-9b02-6f7c1d4a5e30", "userId": "4a1e88f0-9c2d-4f31-b7a0-5e6c1d820b93", "cwd": "/srv/checkout"}'
  ```

  ```python Python theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
  import httpx

  response = httpx.post(
      "https://api.get-exo.com/v1/condition/session",
      headers={"X-Exo-API-Key": EXO_KEY},
      json={"orgId": "0d5b7c92-3a41-4e88-9b02-6f7c1d4a5e30", "userId": "4a1e88f0-9c2d-4f31-b7a0-5e6c1d820b93", "cwd": "/srv/checkout"},
  )
  pack = response.json()
  ```

  ```typescript TypeScript theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
  const response = await fetch("https://api.get-exo.com/v1/condition/session", {
    method: "POST",
    headers: {
      "X-Exo-API-Key": process.env.EXO_KEY!,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ orgId: "0d5b7c92-3a41-4e88-9b02-6f7c1d4a5e30", userId: "4a1e88f0-9c2d-4f31-b7a0-5e6c1d820b93", cwd: "/srv/checkout" }),
  });
  const pack = await response.json();
  ```
</CodeGroup>

The response:

```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "systemPrompt": "You are assisting someone who reasons bottom-up from data and prefers direct answers.",
  "userVoiceHint": "short sentences, technical, no filler",
  "orgRecentContext": ["Currently focused on the Q3 API launch."],
  "expiresAt": "2026-07-14T21:00:00Z"
}
```

## Traps

**`expiresAt` is a cache instruction.** It says how long the pack stays fresh. If you subscribe to events, refetch on `basin.shifted` rather than on a timer.

**`userVoiceHint` can be absent.** The voice profile is withheld entirely until the subject has produced enough writing to measure. An absent hint is a maturity gate, not a failure.

**The session route takes `orgId`, `userId` and `cwd`.** They are required fields on the body. The credential still decides authorization; these describe the session being conditioned.

## Related

<Columns cols={2}>
  <Card title="API reference" icon="book-open" href="/api-reference/overview">
    Base URL, authentication, and the conventions every route shares.
  </Card>

  <Card title="Errors" icon="circle-alert" href="/platform/errors">
    The problem envelope and the full code catalogue.
  </Card>
</Columns>
