Same API, just a different key
Swap your live token for a sandbox key and nothing else changes. Same base URL, same endpoints, same payloads. Sandbox keys are prefixed t_, and the environment is inferred from the key.
Point your code at a sandbox key and every call behaves like production, with real response shapes and real webhooks, but nothing reaches a real account and nothing touches your quota.
Same API, simulated everywhere it counts. Build, test, and break things safely.
Swap your live token for a sandbox key and nothing else changes. Same base URL, same endpoints, same payloads. Sandbox keys are prefixed t_, and the environment is inferred from the key.
Fire incoming comments, reviews, DMs, reactions, and referrals from the Sandbox page. They arrive through the same ingestion as a live webhook, with a sandbox: true flag on every payload.
Connect any network and get a disposable sandbox profile with a fake brand, handle, and IDs. Sandbox data is isolated from live and safe to throw away between runs.
Publishing is simulated end to end. You get a production-shaped response with a fake external_id and status published, but no post reaches a real account and no engagement quota is used.
Authenticate with a t_ key against the same endpoints.
Publishing is faked, webhooks fire to your sandbox endpoints, and your
quota is untouched.
$ curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer t_8f2c1e9a7b3d" \
-H "Content-Type: application/json" \
-d '{
"post": {
"body": "Hello from the sandbox"
},
"profiles": ["prof_sandbox_ig"]
}' {
"id": "post_sb_abc123",
"body": "Hello from the sandbox",
"status": "published",
"source": "postproxy",
"sandbox": true,
"created_at": "2026-11-13T11:00:00.100Z",
"platforms": [
{
"platform": "instagram",
"status": "published",
"external_id": "sb_ig_8f2c1e9a",
"permalink": "https://sandbox.postproxy.dev/p/sb_ig_8f2c1e9a",
"error": null,
"attempted_at": "2026-11-13T11:00:00.300Z"
}
]
} $ curl -X POST "https://api.postproxy.dev/api/api_keys" \
-H "Authorization: Bearer t_8f2c1e9a7b3d" \
-H "Content-Type: application/json" \
-d '{
"name": "CI tests",
"profile_group_id": "grp_sandbox456"
}' {
"id": "key_sb789",
"name": "CI tests",
"profile_group_id": "grp_sandbox456",
"sandbox": true,
"token": "t_8f2c1e9a7b3d4e5f6a7b8c9d",
"created_at": "2026-11-13T11:00:00.000Z"
} $ curl "https://api.postproxy.dev/api/api_keys/key_sb789" \
-H "Authorization: Bearer t_8f2c1e9a7b3d" {
"id": "key_sb789",
"name": "CI tests",
"profile_group_id": "grp_sandbox456",
"sandbox": true,
"token": "t_8f2c1e9a7b3d",
"created_at": "2026-11-13T11:00:00.000Z"
} View the full Sandbox and API-keys reference
View documentationFlip on Sandbox mode in the dashboard and run the whole sandbox by hand. Connect fabricated profiles, simulate incoming comments, DMs, and reviews, and watch them hit your webhooks. No API calls required.
How it switches on, what it mocks, coverage, and how inbound events work.
Use a sandbox API key. Its token is prefixed t_ and it is scoped to a sandbox profile group. You authenticate the same way against the same base URL and endpoints, and the environment is inferred from the key. There is no header, query parameter, or separate URL.
Yes. Flip on Sandbox mode in the dashboard and do it all by clicking: connect fabricated profiles, and simulate incoming comments, DMs, reviews, reactions, and referrals from the Sandbox page. Each one runs through the same ingestion and fires the same webhooks as the API.
No. Publishing is simulated with a production-shaped response and a fake external_id, nothing reaches a real platform, and no engagement quota is consumed.
Posts, comments, reviews, and direct messages across Instagram, Facebook, Threads, YouTube, TikTok, Bluesky, Telegram, Google Business, and WhatsApp.
From the Sandbox page you can simulate incoming comments, reviews, DMs, reactions, and referrals. They run through the same ingestion as a real platform webhook and fire to your sandbox webhook endpoints, each payload carrying a sandbox: true flag.
Yes. A sandbox key only ever sees sandbox data, it is isolated from live and disposable, and moving profiles or placements across environments is rejected.
Spin up a sandbox key and run your whole integration before a single post goes live.