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

# API Endpoints

> Generated endpoint index for the Onyx Research API.

<Warning>
  This page is generated from `docs/reference/openapi.json`. Do not edit endpoint rows by hand; run `node docs/scripts/sync-openapi.mjs` from the onyx-research repo root.
</Warning>

The Onyx API uses `/api/v1` for app, CLI, and integration traffic.

## Research

| Method   | Path                                                                | Summary                                              |
| -------- | ------------------------------------------------------------------- | ---------------------------------------------------- |
| `POST`   | `/api/v1/research/campaigns`                                        | Create or update a research campaign                 |
| `DELETE` | `/api/v1/research/campaigns/{id}`                                   | Delete a research campaign                           |
| `POST`   | `/api/v1/research/campaigns/{id}/archive`                           | Archive a research campaign                          |
| `GET`    | `/api/v1/research/campaigns/{id}/evaluation-revisions`              | List evaluation revisions for a campaign             |
| `GET`    | `/api/v1/research/campaigns/{id}/evaluation-revisions/{revisionId}` | Get an evaluation revision                           |
| `GET`    | `/api/v1/research/campaigns/{id}/experiments`                       | List campaign experiments                            |
| `POST`   | `/api/v1/research/campaigns/{id}/experiments`                       | Report a campaign experiment                         |
| `POST`   | `/api/v1/research/campaigns/{id}/experiments/batch`                 | Report campaign experiments in a batch               |
| `GET`    | `/api/v1/research/campaigns/{id}/graph`                             | Get a campaign experiment graph                      |
| `GET`    | `/api/v1/research/campaigns/{id}/hypotheses`                        | List research hypotheses for a campaign              |
| `POST`   | `/api/v1/research/campaigns/{id}/hypotheses`                        | Create a research hypothesis for a campaign          |
| `GET`    | `/api/v1/research/campaigns/{id}/knowledge`                         | List campaign research knowledge                     |
| `POST`   | `/api/v1/research/campaigns/{id}/knowledge`                         | Create a research knowledge item                     |
| `GET`    | `/api/v1/research/campaigns/{id}/metric-series`                     | Get campaign metric series                           |
| `GET`    | `/api/v1/research/campaigns/{id}/overview`                          | Get a bounded campaign overview                      |
| `POST`   | `/api/v1/research/campaigns/{id}/sessions`                          | Create a campaign session                            |
| `GET`    | `/api/v1/research/campaigns/{id}/timeline`                          | Get research campaign timeline                       |
| `POST`   | `/api/v1/research/campaigns/{id}/unarchive`                         | Unarchive a research campaign                        |
| `POST`   | `/api/v1/research/campaigns/{id}/verify-git`                        | Verify pending research experiment git refs          |
| `GET`    | `/api/v1/research/experiments`                                      | List team experiments                                |
| `DELETE` | `/api/v1/research/experiments/{id}`                                 | Delete a campaign experiment                         |
| `GET`    | `/api/v1/research/experiments/{id}/code`                            | Get campaign experiment code view                    |
| `GET`    | `/api/v1/research/experiments/{id}/diff`                            | Get campaign experiment diff                         |
| `GET`    | `/api/v1/research/experiments/{id}/files`                           | Get campaign experiment file tree                    |
| `GET`    | `/api/v1/research/experiments/{id}/files/blob`                      | Get campaign experiment file blob                    |
| `GET`    | `/api/v1/research/experiments/facets`                               | Team experiment facets                               |
| `PATCH`  | `/api/v1/research/hypotheses/{id}`                                  | Update a research hypothesis                         |
| `POST`   | `/api/v1/research/hypotheses/{id}/close`                            | Close a research hypothesis                          |
| `POST`   | `/api/v1/research/hypotheses/{id}/reopen`                           | Reopen a research hypothesis for future sessions     |
| `POST`   | `/api/v1/research/presence`                                         | Upsert current local worker presence                 |
| `GET`    | `/api/v1/research/projects`                                         | List research projects                               |
| `GET`    | `/api/v1/research/projects/{id}/campaigns`                          | List research campaigns for a project                |
| `GET`    | `/api/v1/research/projects/{id}/graph`                              | Get research project graph                           |
| `POST`   | `/api/v1/research/projects/{id}/sync`                               | Sync research project repository                     |
| `GET`    | `/api/v1/research/projects/{id}/tree`                               | Get research project tree                            |
| `GET`    | `/api/v1/research/projects/resolve`                                 | Resolve a research project                           |
| `GET`    | `/api/v1/research/sessions/{id}/brief`                              | Get a research session brief                         |
| `GET`    | `/api/v1/research/sessions/{id}/control-state`                      | Get research session control state                   |
| `GET`    | `/api/v1/research/sessions/{id}/live`                               | Get research session live state                      |
| `POST`   | `/api/v1/research/sessions/{id}/scale`                              | Scale an open research session                       |
| `POST`   | `/api/v1/research/sessions/{id}/settlement-tick`                    | Nudge research session settlement                    |
| `GET`    | `/api/v1/research/sessions/{id}/state`                              | Get research session state                           |
| `GET`    | `/api/v1/research/sessions/{id}/state-brief`                        | Get research session state brief                     |
| `POST`   | `/api/v1/research/sessions/{id}/stop`                               | Stop a campaign session                              |
| `POST`   | `/api/v1/research/sessions/{id}/worker-leases`                      | Acquire a research worker lease                      |
| `POST`   | `/api/v1/research/sessions/{id}/worker-leases/batch`                | Acquire research worker leases in a batch            |
| `POST`   | `/api/v1/research/worker-heartbeats/batch`                          | Record worker heartbeats in a batch                  |
| `GET`    | `/api/v1/research/worker/brief`                                     | Get the authenticated worker research brief          |
| `GET`    | `/api/v1/research/worker/experiments`                               | List experiments visible to the authenticated worker |
| `POST`   | `/api/v1/research/worker/experiments`                               | Report an experiment for the authenticated worker    |
| `POST`   | `/api/v1/research/worker/heartbeat`                                 | Record a heartbeat for the authenticated worker      |
| `GET`    | `/api/v1/research/worker/knowledge`                                 | List campaign knowledge for the authenticated worker |
| `POST`   | `/api/v1/research/worker/knowledge`                                 | Publish knowledge as the authenticated worker        |

## GitHub

| Method   | Path                                                         | Summary                        |
| -------- | ------------------------------------------------------------ | ------------------------------ |
| `GET`    | `/api/v1/github/installations`                               | List GitHub App installations  |
| `DELETE` | `/api/v1/github/installations/{installationId}`              | Disconnect GitHub installation |
| `GET`    | `/api/v1/github/installations/{installationId}/repositories` | List GitHub repositories       |
| `POST`   | `/api/v1/github/setup-url`                                   | Create GitHub App setup URL    |

## Teams

| Method   | Path                                            | Summary                 |
| -------- | ----------------------------------------------- | ----------------------- |
| `GET`    | `/api/v1/me`                                    | Get current user        |
| `GET`    | `/api/v1/teams`                                 | List teams              |
| `POST`   | `/api/v1/teams`                                 | Create team             |
| `DELETE` | `/api/v1/teams/{id}`                            | Delete team             |
| `PATCH`  | `/api/v1/teams/{id}`                            | Update team             |
| `GET`    | `/api/v1/teams/{id}/invitations`                | List team invitations   |
| `POST`   | `/api/v1/teams/{id}/invitations`                | Invite a team member    |
| `DELETE` | `/api/v1/teams/{id}/invitations/{invitationId}` | Revoke team invitation  |
| `PATCH`  | `/api/v1/teams/{id}/license`                    | Update team license     |
| `GET`    | `/api/v1/teams/{id}/members`                    | List team members       |
| `DELETE` | `/api/v1/teams/{id}/members/{userId}`           | Remove team member      |
| `PATCH`  | `/api/v1/teams/{id}/members/{userId}`           | Update team member role |

## API keys

| Method   | Path                          | Summary        |
| -------- | ----------------------------- | -------------- |
| `GET`    | `/api/v1/api-keys`            | List API keys  |
| `POST`   | `/api/v1/api-keys`            | Create API key |
| `DELETE` | `/api/v1/api-keys/{id}`       | Revoke API key |
| `POST`   | `/api/v1/api-keys/{id}/reset` | Reset API key  |

## Other

| Method | Path                               | Summary                     |
| ------ | ---------------------------------- | --------------------------- |
| `GET`  | `/api/v1/health`                   | Health check                |
| `GET`  | `/api/v1/invitations`              | List my pending invitations |
| `POST` | `/api/v1/invitations/{id}/accept`  | Accept invitation           |
| `POST` | `/api/v1/invitations/{id}/decline` | Decline invitation          |

## OpenAPI Artifact

The full OpenAPI document is checked in at:

```text theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
docs/reference/openapi.json
```
