Skip to content
reelspanDocs

Guides

Test mode

Use an rs_test_ key to run posts through every check without publishing or using uploads, and the sandbox network to rehearse results and failures.

A test key starts with rs_test_ instead of rs_live_. Posts made with it go through every check a live post gets, then stop short of the network: nothing is published, and nothing counts against your monthly uploads. Use it while you build, in CI, and in staging.

Create one in the dashboard under Developers → API keys, choosing a test key. It works with the same base URL, SDKs and workspace as your live keys.

curl -X POST https://api.reelspan.com/v1/posts/text \
  -H "Authorization: Bearer $REELSPAN_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user": "my-brand", "platform": ["x", "linkedin"], "title": "Only a test"}'

What a test post does

Everything up to the moment of publishing is real:

  • Your fields are validated, media is uploaded or downloaded and checked for type and size against your plan, and network rules that run before publishing apply (for example YouTube needs a title, Pinterest a board).
  • The profile must exist and the key must be allowed to use it.
  • Each network must have an account connected to the profile and in good standing, as for a live post. A network with no account is skipped with profile_platform_mapping_invalid, exactly as it would be live.
  • Scheduling, the queue and repeats work: a scheduled test post waits for its time, then is simulated.

Then, instead of sending it to the network, Reelspan marks each network as published:

{
  "success": true,
  "request_id": "9b1f6c2e8a3d4f50b7e1c9a2d6f3e8b1",
  "results": {
    "x": { "success": true, "url": null, "post_id": "test_post_…", "test": true, "message": "Test mode: not sent to the network" },
    "linkedin": { "success": true, "url": null, "post_id": "test_post_…", "test": true, "message": "Test mode: not sent to the network" }
  }
}
  • url is null and post_id starts with test_, because no real post exists.
  • Post status for the request includes "test": true.
  • The post appears in your history and dashboard like any other, and upload_completed webhooks are sent for it, so you can test your webhook handler end to end.
  • No upload is counted, so test posts work past the Free plan's monthly limit. Cancelling a scheduled test post refunds nothing because nothing was taken.

What is not simulated

A test post stops before anything network-specific happens, so it can't tell you whether the network would accept the post. These are only found out by a live post:

  • the network's own limits on size, length, duration and format, and any processing errors;
  • whether the connected account's token still works (Reelspan only checks the account is marked active);
  • network options such as a TikTok privacy level the account can't use;
  • first comments, which are never sent.

The sandbox network

sandbox is a pretend network that needs no connected account. Add it to platform[] on video, photo or text posts. It reads the media like a real network would and "publishes" at once.

curl -X POST https://api.reelspan.com/v1/posts/video \
  -H "Authorization: Bearer $REELSPAN_TEST_KEY" \
  -F "user=my-brand" \
  -F "platform[]=sandbox" \
  -F "title=Pipeline check" \
  -F "[email protected]"

With a test key, a sandbox post is simulated like any other network: url is null, and nothing counts.

With a live key, the sandbox runs for real, and these fields let you rehearse outcomes:

Field Effect
(none) Succeeds with a URL like https://sandbox.reelspan.com/p/…, plus bytes_received, caption and, for photos, photos_received in its result.
sandbox_fail=true Fails for good with error_code: sandbox_rejected. Use it to test your failure handling and Retry.
sandbox_fail=retryable Fails with a temporary error (sandbox_unavailable), which Reelspan retries automatically before reporting it as failed.
sandbox_delay_ms Waits this long (up to 120,000 ms) before finishing, to test async posts and polling.

A sandbox post made with a live key counts as an upload against your plan, like any other network. Use a test key when you only want to check the request.

Limits

  • A workspace can send 500 test posts a day (each request counts once, whatever the number of networks). The count resets at midnight UTC. Past it, test posts get 429 with error_code: TEST_LIMIT.
  • Test keys share the workspace's rate limit with its live keys.
  • A test key only changes how posts are published. Every other call it makes is real: creating or deleting a profile, connecting an account, setting a webhook or using AI caption credits works exactly as with a live key.
  • Dashboard sessions and MCP clients signed in with OAuth always post live.

Something unclear or missing? Write to [email protected] and we’ll fix the page.