For agent testing · no signup to try
An agent that reads GitHub, Jira and Slack needs something real and repeatable to be evaluated against.
SandboxAPIs serves read-only replicas of 25 APIs, filled with one simulated company, and every run gets the same answer. Point the agent at a base URL instead of the real service: its real keys stay out of the run, and nothing it does can write to production.
Run it here: one incident, followed across four vendors' APIs
- 1SlackThe argumentnot run
$ curl -s "https://slack-2026-08.snap.sandboxapis.dev/api/conversations.history?channel=CF1UPUMGC8Q&limit=1"
- posted at
- text
Press Run to send the first request.
- 2JiraThe ticketnot run
$ curl -s "https://jira-v3-g6.snap.sandboxapis.dev/rest/api/3/issue/FATE-46"
- key
- summary
- created
Runs when step 1 resolves.
- 3GitHubThe issue, found by Jira's text, and the pull requestnot run
$ curl -s "https://gh-2026-03-g6.snap.sandboxapis.dev/repos/olympus-labs/parthenon/issues?state=all&per_page=100" $ curl -s "https://gh-2026-03-g6.snap.sandboxapis.dev/repos/olympus-labs/parthenon/pulls/47"
- issue
- pull request
- branch
- head sha
Runs when step 2 resolves.
- 4GitLabThe same branch, on a different vendornot run
$ curl -s "https://gl-v4-g6.snap.sandboxapis.dev/api/v4/projects/olympus-labs%2Fparthenon/merge_requests?source_branch=<branch from step 3>"
- merge request
- head sha
Runs when step 3 resolves.
GitHub head SHAGitLab head SHAwaiting The verdict appears when both SHAs are in.
01 / For integration tests
Test the integration, not the test account.
What you skip
- Set up a test account
- Register an OAuth app, mint a token
- Put a real credential in CI
- Write fake data, keep it fresh
- Maintain mocks against a moving spec
- Burn real API quota in test runs
- Keep one mock per SDK
- Chase CI flakes from drifting data
- Hope nothing writes to production
What you get
Believable by default
Repositories, issues, users, teams, commits, channel threads — all pre-populated and internally consistent.
One data set, every provider
The same people, PRs, issues and threads on every host we serve, with matching SHAs — so an integration that spans tools lines up.
Deterministic
Pinned snapshots regenerate byte-identically, so CI never flakes on the data and agent evals replay exactly.
REST + GraphQL
Exercise the exact transport your integration uses today. Same data, provider-shaped semantics.
02 / The catalog
25 APIs, one data set.
Providers
25
Across 7 categories, each on its own hostname, all telling one story.
Read surfaces
4,524
REST endpoints, GraphQL entities and git-transport routes in the coverage manifest — 3,026 served and verified today, the rest answering with an explicit coverage error.
Pinned snapshots
148
Pinned, byte-reproducible universes on their own hosts, so CI never flakes on the data.
2 categories are listed above with nothing in them yet — they are the lanes the provider-expansion program opens next, and they are named rather than hidden so this page reports what we do not serve as plainly as what we do.
03 / Adoption is a base-URL swap
Keep your client library — change one line.
import { Octokit } from "@octokit/rest";
// The only change: point baseUrl at SandboxAPIs.
const octokit = new Octokit({ baseUrl: "https://gh.sandboxapis.dev" });
const { data } = await octokit.repos.get({
owner: "olympus-labs",
repo: "parthenon",
});
console.log(data.full_name); // "olympus-labs/parthenon"Get a free key
Or stay anonymous at 60 req/hour. A free key raises that to 600 req/hour, burstable in a fixed hourly window and reported in the rate-limit headers your client already reads.
Set one env var
Point your client's base URL at the host you need. 7 categories — git host, issue tracker, AI telemetry, messaging, CI/CD, observability, CRM/support — all serve the same data set, and your auth, SDK and client code stay exactly as-is.
Your app just works
Exercise the happy path and the weird path against one deep, coherent data set that behaves like production — with nothing real connected.
05 / Look around
Add the MCP server to your AI client
- Claude, web and desktop
https://api.sandboxapis.dev/mcp/auth - ChatGPT
https://api.sandboxapis.dev/mcp - Claude Code
claude mcp add --transport http sandboxapis https://api.sandboxapis.dev/mcp - CursorAdd to Cursor
https://api.sandboxapis.dev/mcp - VS CodeAdd to VS CodeInsiders
https://api.sandboxapis.dev/mcp - AntigravityShow the config
https://api.sandboxapis.dev/mcp
Steps for each client, and the npm package to run it locally, are on the MCP docs.
06 / Pricing
Get started for free.
Every provider is served at every tier — a paid plan buys headroom, never an endpoint. Anonymous access stays free at 60 req/hour forever, and paid starts at $5/month for one developer.