Linq Sandbox
The Linq sandbox lets you build and test your iMessage integration against the real API — for free — before going live. You get a real phone line, full API access, and 7 days to validate your integration.
What Is the Sandbox?
The Linq Sandbox is a free trial period where you can test out iMessage and how it works for 7 days before committing to a subscription. In no way is a sandbox meant for full production accounts.
Getting Started
- Fill out the signup form (name, business email, phone, company) and tap Get Started

- Complete the 4-step onboarding walkthrough




Your credentials:
|
Token |
Purpose |
|---|---|
|
Partner API token |
Every |
|
Sandbox signup token |
Completes signup only; expires in 1 hour, cannot call the API |
|
Web session token |
Signs you into the web app; not an API credential |
Note: No token yet? Your phone line hasn't been assigned. It appears automatically once a line is allocated — no action needed.
The One Rule That Will Surprise You
In sandbox, you cannot start a conversation. You can only reply to someone who has already messaged your line first.
Before your first API call: text your sandbox number from your own phone. That inbound message unlocks replies to that number.
Sending to a number that hasn't messaged you returns:
HTTP 403 {"code": 2008, "message": "Recipient not allowed"}
Important notes:
- For group chats, every participant must have messaged your line first — one unknown number fails the whole request
- No time limit — any inbound message, however old, qualifies that number permanently
- The rule applies when adding participants too, not just on initial send
What You Can Test
Sandbox messages are real — sent to real devices. Test with your own number or a colleague's.
- Inbound messages
- Replies, webhooks & real-time event logs
- Read receipts & typing indicators
- Tapback reactions
Rate Limits
Sandbox has two additional account-wide caps that production accounts do not:
|
Limit |
Value |
|---|---|
|
Messages per minute (all lines) |
30 |
|
Messages per day (all lines) |
7,000 — resets midnight UTC |
Exceeding either returns HTTP 429 with a Retry-After header. Use exponential backoff. Only sends count — reads do not.
Trial & Going Live
The 7-day trial starts when your phone line is assigned — not when you sign up. At expiry, your token stops working and every call returns HTTP 401. Your account and history are not deleted.
Note: Webhook subscriptions are removed shortly before expiry. If deliveries go quiet slightly before your end date, that's expected — not a delivery fault.
Going live is simple — nothing breaks:
- Your API token stays the same
- The inbound-first rule is lifted
- Sandbox rate limits are removed
- Your phone number and message history carry over
One thing to redo: Re-register your webhook subscriptions pointing at your production endpoints.
Frequently Asked Questions
Why can't I send a message to a new number? In sandbox you can only reply — not initiate. Text your sandbox line from that number first, then try again.
Why do I have no API token? Your phone line hasn't been assigned yet. It will appear automatically — usually within minutes of signup.
Everything is returning 401. What's wrong? Your trial has likely expired. Your account and data are intact — upgrade to production to restore access.
I'm hitting 429 sooner than expected. Why? The 30/min cap is account-wide, not per line. Sends across multiple lines share the limit.
Does going live require new credentials? No. Your API token stays the same — sandbox restrictions are simply lifted from it.
Issues not covered here? Contact support@linqapp.com.