The sandbox that remembers
One living world across your whole stack.
A made-up company whose people, tickets, deals and payments change like the real thing, in every API you integrate with.
Plans from $49 a month with AI generation included, billed in advance. Starter comes with a 7-day free trial. Cancel any time.
Using a coding agent? Skip the set-up. Give it one line:
Set up Slurry for me: fetch and follow https://slurry.io/agent-setup.mdWorks with Claude Code, Codex, Cursor and Copilot. It shows a live demo, installs the MCP server and creates your first simulation. Read the instructions
Bernard D'Amore-Walsh, Support Team Lead at Highfield Partners, in four simulations of one generated world.
Underlined: the same person
GET /rest/api/3/issue/MA-40
{
"id": "10040",
"key": "MA-40",
"fields": {
"summary": "Search results ignore archived projects filter",
"status": { "name": "In Progress" },
"priority": { "name": "Medium" },
"assignee": {
"accountId": "o9MybnOteJrX",
"displayName": "Bernard D'Amore-Walsh",
"emailAddress": "bernard.damorewalsh@highfieldpartners.co.uk"
}
}
}GET /api/conversations.history
{
"type": "message",
"ts": "1793559659.801453",
"user": "U0RXJDBVUDV",
"text": "Can someone take a look at the failing deploy?",
"user_profile": {
"real_name": "Bernard D'Amore-Walsh",
"display_name": "Bernard D'Amore-Walsh",
"name": "bernard.damorewalsh"
}
}users.info
{
"id": "U0RXJDBVUDV",
"profile": {
"real_name": "Bernard D'Amore-Walsh",
"display_name": "Bernard D'Amore-Walsh",
"email": "bernard.damorewalsh@highfieldpartners.co.uk"
}
}GET /gmail/v1/users/me/messages/19b439f06a683653
{
"id": "19b439f06a683653",
"threadId": "19b439f06a683653",
"labelIds": ["SENT"],
"payload": {
"headers": [
{ "name": "From", "value": "Bernard D'Amore-Walsh <bernard.damorewalsh@highfieldpartners.co.uk>" },
{ "name": "To", "value": "Dashawn Effertz <dashawn.effertz@highfieldpartners.co.uk>" },
{ "name": "Subject", "value": "CoolAir HVAC - revised quote for chiller service" },
{ "name": "Date", "value": "Thu, 17 Sep 2026 16:56:00 +0100" }
]
}
}GET /crm/v3/objects/contacts/1200000015838
{
"id": "1200000015838",
"properties": {
"firstname": "Jaydon",
"lastname": "Marquardt",
"company": "Pennine Freight",
"jobtitle": "Facilities Manager",
"hubspot_owner_id": "40000008"
}
}GET /crm/v3/owners/40000008
{
"id": "40000008",
"email": "bernard.damorewalsh@highfieldpartners.co.uk",
"firstName": "Bernard",
"lastName": "D'Amore-Walsh",
"type": "PERSON"
}Try it
Call a live one. No account needed.
Public, read-only demo worlds with published keys. Paste a request into your terminal and look at the data.
Salesforce demo
demo-salesforce.slurry.iocurl https://demo-salesforce.slurry.io/services/data/v62.0/query?q=SELECT+Id,Name,StageName,Amount+FROM+Opportunity+LIMIT+5 \ -H "Authorization: Bearer slurry_sim_live_goUY5TJ_S-BlWD_5sOPNGN3amuHtRevr"Stripe demo
demo-stripe.slurry.iocurl https://demo-stripe.slurry.io/v1/customers?limit=5 \ -H "Authorization: Bearer slurry_sim_live_pyUJZLftgZWIcqIClvHPqoGFPgg6G5wZ"
How it works
From spec to living API in minutes.
Slurry uses a model where it is good - reading specs and writing believable data - and a deterministic engine everywhere else.
- 01
Pick an API, or bring your spec
Choose from the library - CRM, ERP, payments, HR and more - or upload an OpenAPI or Swagger file.
library: project-management
- 02
Slurry builds a coherent world
A model reads the spec once and generates seed data that fits together: customers own their orders, invoices reference real line items.
840 records across 6 collections
- 03
Get a URL, locked down by default
Your simulation goes live behind an API key and an IP allow-list seeded with your address. Switching it off is a deliberate choice.
https://acme-tickets.slurry.io
- 04
Use it like the real thing
Writes persist. Data moves on a schedule. State changes fire signed webhooks. Rules give you the 503 your vendor sandbox never will.
POST /tickets 201 Created
What you get
Everything a vendor sandbox should have been.
State
It remembers
State that carries across endpoints and over time: a POST shows up in the list, the schedule moves it on, a webhook tells you.
Seed data
Coherent, not random
Records that reference each other correctly, in volumes that make sense for the API you picked. Not a pile of schema-shaped strings.
Behaviour
It keeps living
A behaviour plan moves tickets, settles invoices and creates new records on a schedule, so Thursday’s data is not Tuesday’s.
Webhooks
Events on change
Every change emits an event. Deliveries are HMAC-signed and retried with backoff, with no separate webhook tool to bolt on.
Rules
Failure on demand
Fixed responses, errors with a probability, latency with jitter, conditional matches and chaos, per endpoint.
Access
Private by default
API keys hashed at rest and an IP allow-list switched on from the first second. Off is the choice you make.
MCP
Agents welcome
An MCP server lets an agent create, configure, fast-forward and tear down its own simulation without a person in the loop.
AI
AI generation included
Every plan includes a monthly allowance for AI-designed worlds. Serving requests never uses AI. Need more? Prepaid packs, or your own model key.
One company, every API
Describe your company once.
Every simulation in your account draws on the same made-up company: its employees, teams and customers. Add Slack next to Jira and the people are already there.
- Describe it once
- Write a short brief and a model designs the cast once, or skip the brief and get one built without AI. Edit the people and customers by hand whenever you like.
- The same people in every simulation
- Names, emails, titles, departments and customer companies match across Jira, Slack, Gmail, HubSpot and the rest, so Bernard in a ticket is Bernard in the CRM.
- Vendor ids stay vendor-specific
- Each API keeps its own id formats and references: a Jira accountId, a Slack user id, a HubSpot owner id. Your integration still has to map them, just like production.
Bernard D'Amore-Walsh
bernard.damorewalsh@highfieldpartners.co.uk
Support Team Lead, Customer Success. One of 40 employees at Highfield Partners, which has 12 customer companies.
| API | Field | Vendor id |
|---|---|---|
| Jira | accountId | o9MybnOteJrX |
| Slack | user | U0RXJDBVUDV |
| Gmail | From | bernard.damorewalsh@highfieldpartners.co.uk |
| HubSpot | hubspot_owner_id | 40000008 |
Taken from the generated world on this page. Gmail has no user id for a sender: the address is the identity.
A world, not a mock
The sandbox that remembers.
A static mock is a list of responses. A Slurry simulation is closer to a customer account that lives between your test runs: fast-forward time, script behaviour, reset to seed.
- A clock
- Fast-forward up to 30 simulated days in one call. Each behaviour rule catches up (up to 200 steps per rule) and the resulting changes fire webhooks.
- A plot
- A declarative behaviour plan: transitions, creates, updates and deletes, each on its own schedule. You can read it, edit it, and switch rules off.
- Consequences
- Every change is an event on a timeline, delivered to your webhook with a signature and a retry schedule, just like production.
- An undo button
- Reset restores the original seed records. Snapshots save any state you like, and forks give each test run its own copy.
# Jump a week ahead: each behaviour rule catches up on 168 hours
curl -X POST https://api.slurry.io/v1/simulations/acme-tickets/fast-forward \
-H "Authorization: Bearer $SLURRY_ACCOUNT_KEY" \
-H "Content-Type: application/json" \
-d '{ "hours": 168 }'
# {"hours":168,"changes":412}
# Make search fail 30% of the time and watch your retries work
curl -X POST https://api.slurry.io/v1/simulations/acme-tickets/rules \
-H "Authorization: Bearer $SLURRY_ACCOUNT_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Flaky search", "kind": "error", "method": "GET",
"pathPattern": "/v1/tickets/search",
"config": { "status": 503, "probability": 0.3 } }'
# Back to the original seed records
curl -X POST https://api.slurry.io/v1/simulations/acme-tickets/reset \
-H "Authorization: Bearer $SLURRY_ACCOUNT_KEY"The model writes the plan. The engine plays it.
A model is called when a simulation is created, never on the request path or the scheduler tick. Responses come back in milliseconds, runs are reproducible, and generation cost is bounded and visible before you spend it.
Library
Stateful simulations of the business APIs you integrate with.
Ready-made simulations grouped by the categories teams integrate with most. Cannot find yours? Upload the spec and get one anyway.
- Project management & work trackingTools for planning, assigning and tracking work items, sprints and milestones across teams.
- CRMSystems of record for contacts, accounts, deals and pipeline.
- Accounting & ERPGeneral ledger, invoicing and financial reporting, plus larger ERP suites covering inventory, procurement and manufacturing.
- PaymentsPayment processing, invoicing, subscription billing and payouts.
- Communication/messagingTeam chat and messaging platforms.
- File storage & documentsCloud file storage, sync and document collaboration.
- Calendar & schedulingCalendar data and meeting/booking scheduling tools.
- Meeting recording & transcriptsMeeting recorders, notetakers and call intelligence: recordings, transcripts, speakers and summaries.
- E-commerce platformsOnline storefronts and marketplaces.
- HRIS & payrollEmployee records, payroll processing and benefits administration.
- Helpdesk & ticketingCustomer support ticketing, live chat and knowledge base tools.
- Marketing automation & emailCampaign management, email marketing and lead nurturing.
MCP server
Built for agents, not just for people.
Before your agent touches a real customer’s CRM, let it touch a fake one that behaves the same way: the same state, the same webhooks, the same failure modes. Prove it is safe on a system that is not real before anyone lets it near one that is.
- › search_library
- › list_verticals
- › ask_slurry
- › get_integration_guide
- › list_simulations
- › create_simulation
- › get_simulation
- › get_status
- › get_usage
- › report_issue
{
"mcpServers": {
"slurry": {
"type": "http",
"url": "https://api.slurry.io/mcp"
}
}
}Streamable HTTP. Authenticate with an account key; restrict it to your IP ranges if you like. Included on every plan.
Security
Locked down by default, because it has to be.
Slurry is for synthetic test data only. It is not, and must never be used as, a store of real customer, payment or personal data. We built the controls as if it were anyway.
- IP allow-list on by default, seeded with the creator’s address
- Simulation and account keys stored as SHA-256 hashes, shown once
- Your own model keys encrypted with AES-256-GCM
- Simulations only ever return JSON, never HTML
- Webhooks to private or internal addresses blocked at connect time
- Per-plan rate limits and abuse monitoring on content and traffic
- Two-factor authentication and breached-password checks
- An audit log of every security-relevant action
Pricing
One monthly price. AI generation included.
Each plan includes a monthly allowance for AI-designed worlds. Serving requests never uses AI, so traffic never adds to the bill. Overflow with prepaid credit or your own model key.
Starter
$49/ month
7-day free trial, then billed monthly in advance, excluding VAT
For one developer wiring up an integration.
$10 of AI generation a month
- 3 live simulations
- 3 concurrent forks
- 50k requests / month
Team
Most popular$199/ month
Billed monthly in advance, excluding VAT
For teams shipping several integrations together.
$40 of AI generation a month
- Up to 10 team members with roles
- 15 live simulations
- 20 concurrent forks
Scale
$499/ month
Billed monthly in advance, excluding VAT
For platforms and QA at volume.
$100 of AI generation a month
- Up to 50 team members with roles
- 60 live simulations
- 100 concurrent forks
Is Slurry a mock server or a sandbox?
How realistic is the generated data?
Does this replace testing against the real API?
Is this an official sandbox for any vendor?
Can I upload a spec for an API that is not public?
What happens when the AI allowance runs out?
Can an AI agent use Slurry without a person setting it up?
What about SOAP, SFTP, EDI or email?
What stops people abusing it?
Pick an API. Break it on purpose.
Subscribe, pick an API and send your first request in minutes. Plans from $49 a month, cancel any time.