Founding keys are opena year free at 6,000 req/hour, for the first 1,000 developersClaim yours

Codex Analytics

Point your Codex Enterprise Analytics calls at https://chatgpt.sandboxapis.dev (curl or any HTTP client — the API is documented by an official OpenAPI, not an SDK). Auth is a Bearer workspace Admin key (any value is accepted here). This universe has ONE workspace, 2c9bcd8f-c169-4ce5-a266-c8cba93fbad5; every path is /v1/analytics/codex/workspaces/{workspace_id}/{usage|code_reviews|code_review_responses}, windowed by start_time/end_time in Unix seconds (end_time exclusive). Usage rows are per user by default and workspace-wide with group=workspace. This is the SAME codex cohort the openai host bills: estimated_cost_usd over a window sums to exactly the openai /v1/organization/costs total for it, and code_attribution counts real commits that resolve on the git hosts.

REST · 3 endpointsMCP-ready

Coverage badge

Full3/3 · 100%

The share of read rows with a final answer — served and verified, a deviation, retired upstream, or a reviewed empty/refusal. Computed in the coverage manifest, copied here.

Live host
chatgpt.sandboxapis.dev
Pinned hosts
6 — generation 5, 6, 8, 9, 10, 11
Serving since
2026-08-18
Lifecycle
Live

Served & verified

3 / 100%

Answering with real universe data, each response checked against Codex Analytics's published spec by the conformance suite on this build.

The full read API

3

Every read surface Codex Analytics publishes, deferred long tail included, minus the rows excluded by policy. Writes are out of scope: this universe is read-only.

Not served yet

0

Nothing — every read surface Codex Analytics publishes is answered.

01 / The swap

Point your client at a different base URL.

No SDK of ours, no shim, no recorded fixtures. The same client library you already use, one environment variable different.

shell
curl -H 'Authorization: Bearer any-key' "https://chatgpt.sandboxapis.dev/v1/analytics/codex/workspaces/2c9bcd8f-c169-4ce5-a266-c8cba93fbad5/usage?group=workspace&limit=5"

Verified drop-in clients

No client library is version-pinned against Codex Analytics yet, so this page claims none. What is asserted is the wire: every response above is validated against Codex Analytics's own published spec by the conformance suite. Client pins live in coverage/client-pins.yaml and are added as each SDK joins the suite.

02 / Coverage by family

Every read surface, grouped the way Codex Analytics groups it.

All 3 rows the coverage manifest carries for Codex Analytics, deferred long tail included and nothing capped. Open a family, or filter by path to find the exact endpoint your client calls.

Status — what a conformance test found

served & verified
answers with real universe data, and this build checked that response against the vendor's spec.
deviation
served and faithful to the real provider, but failing the vendored spec — usually a bug in the spec.
retired
the vendor removed the endpoint; snapshots pinned before that date still serve it.
planned / deferred
not served yet — an explicit coverage error naming the gap, never invented data.
excluded
out of the claim by policy (writes, and surfaces we refuse); not in any denominator on this page.

Mode — what kind of answer a row gets

derive
the response is computed from artifact rows that already exist
generate
canon does not carry this yet; the generator will produce it, then derive
empty
the true answer for this universe is an empty collection — reason + reviewed date required
refuse
mirror the provider's OWN refusal (e.g. its 403 for a non-admin token) — reason + reviewed date required
read-only
a write named in the manifest because clients probe it; the read-only 403 IS its final response, and it never joins the badge denominator

A row with no mode shown has not been judged yet. Modes are the manifest's own words, from coverage/MODES.yaml; every empty and refuse carries a written reason and a review date before it counts as final.

Badge — where Full starts

Full
every published read row has a final answer
Deep
60% up to 100%
Partial
25% up to 60%
Preview
under 25%

REST + GraphQL + git rows that are not `excluded`. Write operations are NOT rows (DECISIONS 2026-09-01 decision 9): they are counted in meta.write_operations and never enter this ratio.

3 read surfaces in 3 families

codex-code-review-responses1 of 1 served & verified
GET
/v1/analytics/codex/workspaces/{workspace_id}/code_review_responses

the response side of the same fact: with no code reviews, there are no review responses (DECISIONS 2026-08-18 [P32] decision 4)

served & verified
Core
codex-code-reviews1 of 1 served & verified
GET
/v1/analytics/codex/workspaces/{workspace_id}/code_reviews

the two-seat Codex trial uses CLI and IDE clients and never enabled the GitHub review integration, so no code review exists to report (DECISIONS 2026-08-18 [P32] decision 4)

served & verified
Core
codex-usage1 of 1 served & verified
GET
/v1/analytics/codex/workspaces/{workspace_id}/usage
served & verified
Core

03 / What's simulated

One data set, rendered in Codex Analytics's dialect.

Every Codex Analytics call resolves against the same simulated data set every other provider serves. Counted from the chatgpt-v1-g11 artifact (universe generation 11):

What another provider has to agree with, and the test that makes it

Each line below is one assertion in the conformance suite named beside it — run on every build, over one artifact, through the real renderers. Nothing is claimed here that no expect checks.

05 / Pinned snapshots

Frozen universes, on their own hostnames.

Each pin regenerates byte-identically on every request, so a test written against one never drifts. Generations are DIFFERENT universes, not versions of one — never swap a suffix expecting the same data.

PinHostUniverse generationCodex Analytics API versionRepository files
chatgpt-v1chatgpt-v1.snap.sandboxapis.devgeneration 5v1served
chatgpt-v1-g10chatgpt-v1-g10.snap.sandboxapis.devgeneration 10v1served
chatgpt-v1-g11chatgpt-v1-g11.snap.sandboxapis.devgeneration 11v1served
chatgpt-v1-g6chatgpt-v1-g6.snap.sandboxapis.devgeneration 6v1served
chatgpt-v1-g8chatgpt-v1-g8.snap.sandboxapis.devgeneration 8v1served
chatgpt-v1-g9chatgpt-v1-g9.snap.sandboxapis.devgeneration 9v1served

Need an endpoint that is not served yet?

Every row Codex Analytics's manifest carries is on this page, so “not here” is an answer rather than a gap in the rendering. Tell us which path and which client, and it moves up the queue — the order is set by what people ask for.

Request coverage