> ## Documentation Index
> Fetch the complete documentation index at: https://arizeai-433a7140.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Typed TypeScript client for Phoenix platform APIs

`@arizeai/phoenix-client` is the typed TypeScript client for Phoenix platform APIs. It ships a small root REST client plus focused module entrypoints for prompts, datasets, experiments, spans, sessions, traces, and CI-friendly dataset-backed eval tests.

## Install

```bash theme={null}
npm install @arizeai/phoenix-client
```

## Minimal Example

```ts theme={null}
import { createClient } from "@arizeai/phoenix-client";
import { listDatasets } from "@arizeai/phoenix-client/datasets";

const client = createClient();
const datasets = await listDatasets({ client });
```

## Docs And Source In `node_modules`

After install, a coding agent can inspect the installed package directly:

```text theme={null}
node_modules/@arizeai/phoenix-client/docs/
node_modules/@arizeai/phoenix-client/src/
```

That gives the agent version-matched docs plus the exact implementation and generated API types that shipped with your project.

## Module Map

| Import                                    | Purpose                                                 |
| ----------------------------------------- | ------------------------------------------------------- |
| `@arizeai/phoenix-client`                 | `createClient`, generated OpenAPI types, config helpers |
| `@arizeai/phoenix-client/prompts`         | Prompt CRUD plus `toSDK` conversion                     |
| `@arizeai/phoenix-client/datasets`        | Dataset creation and retrieval                          |
| `@arizeai/phoenix-client/experiments`     | Experiment execution and lifecycle                      |
| `@arizeai/phoenix-client/spans`           | Span search, notes, and span/document annotations       |
| `@arizeai/phoenix-client/sessions`        | Session listing, retrieval, and session annotations     |
| `@arizeai/phoenix-client/traces`          | Project trace retrieval and trace annotations           |
| `@arizeai/phoenix-client/vitest`          | Vitest entrypoint for dataset-backed eval tests         |
| `@arizeai/phoenix-client/vitest/reporter` | Vitest reporter for Phoenix eval summaries              |
| `@arizeai/phoenix-client/jest`            | Jest entrypoint for dataset-backed eval tests           |
| `@arizeai/phoenix-client/jest/reporter`   | Jest reporter for Phoenix eval summaries                |

## Configuration

`createClient()` resolves Phoenix client options in this order: library defaults, environment variables, then explicit options. In most applications, the normal setup is to set `PHOENIX_HOST` and `PHOENIX_API_KEY` in the environment and call `createClient()` with no overrides.

### Recommended Setup

Use the environment-driven path unless you have a specific reason to override client options in code.

```bash theme={null}
export PHOENIX_HOST=http://localhost:6006
export PHOENIX_API_KEY=<your-api-key>
```

If you're using Phoenix Cloud, `PHOENIX_HOST` may look like `https://app.phoenix.arize.com/s/my-space`.

```ts theme={null}
import { createClient } from "@arizeai/phoenix-client";

const client = createClient();

const datasets = await client.GET("/v1/datasets");
```

`PHOENIX_API_KEY` is converted into `Authorization: Bearer <key>` automatically. You do not need to build that header yourself unless you are explicitly overriding `headers`.

### Explicit Overrides

```ts theme={null}
import { createClient } from "@arizeai/phoenix-client";

const client = createClient({
  options: {
    baseUrl: "https://phoenix.example.com",
    headers: {
      Authorization: `Bearer ${process.env.PHOENIX_API_KEY}`,
    },
  },
});
```

Use explicit options when you want configuration to live in code or when you need to override the environment for a specific client instance.

### createClient Parameters

| Field                   | Type                           | Description                                                                                                       |
| ----------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| `options`               | `Partial<ClientOptions>`       | Explicit options passed to the underlying `openapi-fetch` client.                                                 |
| `getEnvironmentOptions` | `() => Partial<ClientOptions>` | Optional resolver for environment-derived options. The default implementation reads `process.env` when available. |

### Resolved Phoenix Options

These are the Phoenix-specific options this package resolves before creating the underlying OpenAPI client:

| Option    | Type                       | Description                                                                                                                                       |
| --------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `baseUrl` | `string`                   | Base Phoenix URL. Defaults to `http://localhost:6006`, or `PHOENIX_HOST` when that environment variable is set.                                   |
| `headers` | `ClientOptions["headers"]` | Headers sent on every request. `PHOENIX_API_KEY` populates `Authorization` automatically. Explicit `headers` replace environment-derived headers. |

### Header Override Rule

If you pass `options.headers`, they replace the environment-derived header object rather than deep-merging with it. That means if you override `headers` and still want API key authentication, include `Authorization` yourself:

```ts theme={null}
const client = createClient({
  options: {
    headers: {
      Authorization: `Bearer ${process.env.PHOENIX_API_KEY}`,
    },
  },
});
```

### Environment Variables

| Variable                 | Maps to                         | Description                                                                                                |
| ------------------------ | ------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `PHOENIX_HOST`           | `options.baseUrl`               | Base Phoenix URL, for example `http://localhost:6006`.                                                     |
| `PHOENIX_API_KEY`        | `options.headers.Authorization` | Bearer token for authenticated environments.                                                               |
| `PHOENIX_CLIENT_HEADERS` | `options.headers`               | Optional JSON-encoded object of additional headers to send on every request. Most setups do not need this. |

## API Client

`createClient()` returns an `openapi-fetch` client that is typed against Phoenix's generated OpenAPI schema. Use this layer when you need an endpoint that does not yet have a high-level helper.

```ts theme={null}
import { createClient } from "@arizeai/phoenix-client";

const client = createClient();

const datasets = await client.GET("/v1/datasets");

const prompt = await client.GET("/v1/prompts/{prompt_identifier}/latest", {
  params: {
    path: {
      prompt_identifier: "support-response",
    },
  },
});
```

The root export exposes generated API types: `pathsV1`, `componentsV1`, `operationsV1`, `Types`, and `PhoenixClient`.

Prefer this layer when:

* you need a newly added endpoint before a helper exists
* you want direct control over route, body, and query params
* you are building thin wrappers around Phoenix routes in your own codebase

## Where To Start

* [Prompts](./prompts), [Datasets](./datasets), [Experiments](./experiments) — higher-level workflows
* [Annotations](./annotations) — annotation concepts, then [Span](./span-annotations), [Document](./document-annotations), and [Session](./session-annotations) annotations for detailed usage
* [CI Eval Tests](./ci-evals) — Vitest/Jest eval suites backed by Phoenix datasets and experiments
* [Spans](./spans), [Sessions](./sessions), [Traces](./traces) — retrieval and maintenance

<section className="hidden" data-agent-context="source-map" aria-label="Source map">
  <h2>Source Map</h2>

  <ul>
    <li><code>src/client.ts</code></li>
    <li><code>src/config.ts</code></li>
    <li><code>src/**generated**/api/v1.ts</code></li>
    <li><code>src/types/core.ts</code></li>
    <li><code>src/prompts/</code></li>
    <li><code>src/datasets/</code></li>
    <li><code>src/experiments/</code></li>
    <li><code>src/spans/</code></li>
    <li><code>src/sessions/</code></li>
    <li><code>src/traces/</code></li>
    <li><code>src/vitest/</code></li>
    <li><code>src/jest/</code></li>
    <li><code>src/testing/</code></li>
    <li><code>src/types/</code></li>
  </ul>
</section>
