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

> ## Agent Instructions
> Evolve has two products behind one API key. Edith answers questions about an agent trajectory over HTTP: `POST https://api.evolvingmachines.ai/v1/decisions`. Evaluations run coding agents on tasks in cloud sandboxes, through the `evolve` CLI, the Python and TypeScript SDKs, or HTTP.
> A person creates the key at https://dashboard.evolvingmachines.ai/api-keys. Read it from `EVOLVE_API_KEY`; never ask for it in chat or write it to a file.
> Install the CLI with `npm install -g @evolvingmachines/evolve`, then confirm the connection with `evolve auth status`.
> The CLI carries the manual for its own version. `evolve skills get evals` prints the index and `evolve skills get evals <page>` prints one page, for example `evolve skills get evals cli-reference/run`. When the installed CLI is older than this site, follow the installed manual.
> Commands take `--help` for their options and `--json` for machine-readable output. Evaluations spend credits: start with one task and set `--max-trial-spend`.

# Authentication and teams HTTP API

> Verify a key, read account features, and create or join teams.

Authenticate Evolve requests with `Authorization: Bearer <key>`. Read your account status before submitting an evaluation, and use organization ids or slugs to place work in a team.

Examples reuse [connection setup](https://docs.evolvingmachines.ai/api-reference/index.md#connect):

```bash theme={"dark"}
curl -sS "$API/api/auth/status" \
  -H "Authorization: Bearer $EVOLVE_API_KEY"
```

Success returns `200 AuthStatus`. See [authentication methods](https://docs.evolvingmachines.ai/sdk-reference/methods/auth.md) for the identity, API-key, and account fields.

## Account routes

| Method and path | Input | Success |
| - | - | - |
| `GET /api/auth/status` | None | `200 AuthStatus` |
| `GET /api/auth/features` | None | `200 AccountFeatures` |
| `PATCH /api/auth/features` | JSON: optional `edith_images` boolean | `200 AccountFeatures` |

To enable images for your account's Edith keys:

```bash theme={"dark"}
curl -sS -X PATCH "$API/api/auth/features" \
  -H "Authorization: Bearer $EVOLVE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"edith_images":true}'
```

The change reaches Edith within a minute. Images are scaled to at most 1.6 megapixels and billed as input tokens. A disabled account receives `403 images_not_enabled` when sending images. See [Edith image inputs](https://docs.evolvingmachines.ai/edith/api.md) for the request format.

## Team routes

`{org}` accepts a slug or id. The API key has its owner's team membership; knowing an organization id does not grant access.

| Method and path | Input | Success |
| - | - | - |
| `GET /api/orgs` | None | `200`, `{ items: Organization[] }` |
| `GET /api/orgs/{org}` | Organization slug or id | `200 OrganizationDetail`, including quota and usage |
| `POST /api/orgs` | Required `slug`; optional `display_name` | `201 Organization` |
| `GET /api/orgs/{org}/members` | Organization slug or id | `200`, `{ items: OrgMember[] }` |
| `POST /api/orgs/{org}/invites` | Optional `expires_in_sec`, `max_uses` | `201 OrgInviteCreated` |
| `POST /api/orgs/invites/accept` | Required `token` string | `200`, `{ org, already_member }` |

Organization and member lists are not cursor-paginated. The [team method reference](https://docs.evolvingmachines.ai/sdk-reference/methods/auth.md) documents the returned fields.

### Create a team

```bash theme={"dark"}
curl -sS "$API/api/orgs" \
  -H "Authorization: Bearer $EVOLVE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"slug":"eval-team","display_name":"Eval team"}'
```

`slug` contains 1–48 lowercase letters, digits, or hyphens, and begins and ends with a letter or digit. `display_name` is at most 120 characters.

### Create and redeem an invite

Set `ORG` to an organization you own. This request creates an invite with the defaults: seven-day expiry and unlimited uses.

```bash theme={"dark"}
curl -sS "$API/api/orgs/$ORG/invites" \
  -H "Authorization: Bearer $EVOLVE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{}'
```

| Field | Omitted | Other accepted values |
| - | - | - |
| `expires_in_sec` | 604800 seconds (7 days) | Integer from 60 to 7776000; `null` means no expiry |
| `max_uses` | Unlimited | Integer of at least 1; `null` means unlimited |

The raw invite token appears once in the creation response. To redeem one, save the token you received in `invite.json`:

```json invite.json theme={"dark"}
{
  "token": "YOUR_INVITE_TOKEN"
}
```

```bash theme={"dark"}
curl -sS "$API/api/orgs/invites/accept" \
  -H "Authorization: Bearer $EVOLVE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @invite.json
```

The caller joins as a member. An existing member receives `already_member: true` without consuming a use.

## Errors and permissions

Writes require a full-access key. Invite creation requires organization ownership. A nonmember cannot inspect another organization's details. Unknown tokens return `404 invite_not_found`; revoked, expired, or exhausted tokens return `410 invite_invalid` with the reason in `details`.

See [organization error codes](https://docs.evolvingmachines.ai/sdk-reference/error-codes.md#organizations-and-invites). Additional account management operations are documented in [key management](https://docs.evolvingmachines.ai/sdk-reference/auth.md#manage-api-keys-over-http) and [team management](https://docs.evolvingmachines.ai/sdk-reference/auth.md#manage-teams-over-http).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.