Build an agent that texts
Linq is a messaging platform for agents to communicate over iMessage. One API sends and receives blue-bubble messages, with group chats, reactions, rich media, and webhooks. You build the agent; your users just text it.
Start with one prompt
Sign up for the sandbox to get your API key and number, then copy this prompt into Claude Code, Cursor, or Codex. It contains the docs link, the endpoints, and the sandbox rules, so your coding agent can scaffold the integration for you.
I'm at a hackathon building on Linq, an API that lets agents send and receive iMessages. I have a sandbox account from https://dashboard.linqapp.com/sandbox-signup with an API key and a Linq phone number.
Read https://docs.linqapp.com/getting-started/quickstart/ and set up a minimal project that:
1. Sends an iMessage with:
POST https://api.linqapp.com/api/partner/v3/chats
Header: "Authorization: Bearer $LINQ_API_KEY"
Body: {"from": "<my Linq number>", "to": ["<recipient>"], "message": {"parts": [{"type": "text", "value": "Hello from my agent!"}]}}
2. Exposes a public webhook endpoint, subscribes it to message.received events via
POST https://api.linqapp.com/api/partner/v3/webhook-subscriptions,
and replies to inbound texts with POST https://api.linqapp.com/api/partner/v3/chats/{chat_id}/messages.
Sandbox rules my project must respect:
- Inbound-first: a user has to text my Linq number before my agent can message them. Design the flow so the user texts first.
- The first outbound message in a new chat must not contain links, reply_to, or message effects; link parts and text parts containing URLs are rejected on POST /v3/chats. Send links in a follow-up message once the chat exists.
- Up to 100 contacts. My Linq number stays active for 7 days. Unlimited messages.
Use the TypeScript SDK (npm install @linqapp/sdk) or plain HTTP, whichever is simpler. Ask me for my LINQ_API_KEY and Linq phone number, then run it end to end.Send your first iMessage in three steps
Hackathon time is short. Three steps cover the whole integration.
1. Sign up for the sandbox
Create a sandbox account at dashboard.linqapp.com/sandbox-signup. Signing up gives you an API key and a Linq phone number. Keep the quickstart open; it covers each step below in more detail.
2. Send your first message
One POST request sends a real iMessage. Text your Linq number from your phone first, since the sandbox is inbound-first, then send the request and watch the blue bubble arrive.
3. Listen and reply
Subscribe a webhook to message.received and reply in the same chat. That loop of inbound text and agent reply is the skeleton of most projects.
curl -X POST https://api.linqapp.com/api/partner/v3/chats \
-H "Authorization: Bearer $LINQ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "+12223334444",
"to": ["+15556667777"],
"message": { "parts": [{ "type": "text", "value": "Hello from my agent!" }] }
}'Sandbox limitations
Your hackathon account runs on a Linq sandbox number. It has three limitations to design around before you start building.
Inbound-first messaging
Your agent can only message people who have texted your Linq number first. Design your project so the user starts the conversation. A QR code that opens iMessage works well in a demo.
100 contacts
Your sandbox number can hold conversations with up to 100 unique contacts. That covers judges, teammates, and a demo audience.
7 days, unlimited messages
Your Linq number stays active for seven days, and there is no limit on how many messages you send. You can keep building after the weekend.
What could your project do over iMessage?
Personal assistant
An agent that lives in iMessage. There is no app to download; the conversation starts when someone texts it.
Concierge & bookings
Reservations, orders, and reminders handled over text. The message thread is the whole interface.
Group-chat agent
Drop an agent into a group thread to settle debates, split bills, or plan a trip with friends.
Anything conversational
Coaching, matchmaking, market alerts, support. If it works as a conversation, it works over iMessage.
Get help during the hackathon
The Linq team is in Discord for the whole event. Ask about API keys, webhooks, or what to build.