Guides
Handling replies
Find replies, send responses, and track message jobs.
By the end of this guide you can find a reply, read the conversation, send a response, and track whether that response actually sent.
When someone replies, Furnace groups the exchange into a thread on the campaign's mailbox.
Replace f_your_key_here and the example ids with your own.
Before you start
- A running campaign that has already sent mail (so replies can arrive).
- An API key with access to the account inbox.
1. List conversations
curl -sS 'https://api.getfurnace.io/v1/threads' \
-H 'Authorization: Bearer f_your_key_here'Filter and sort in the API Reference (for example by campaign or latest inbound activity). Copy a thread id for the next steps.
Success: you get a page of threads. New replies typically show a recent last_inbound_at.
2. Read the messages
curl -sS 'https://api.getfurnace.io/v1/threads/b7e2c1a4-3f5d-4e8a-9b0c-1d2e3f4a5b6c/messages' \
-H 'Authorization: Bearer f_your_key_here'Success: messages include direction (sent / received), subject, and body fields you can display or pass to your own agent.
3. Send a reply
Sending is queued. The API returns a message job, not proof that the email left the mailbox yet.
curl -sS -X POST 'https://api.getfurnace.io/v1/threads/b7e2c1a4-3f5d-4e8a-9b0c-1d2e3f4a5b6c/reply' \
-H 'Authorization: Bearer f_your_key_here' \
-H 'Content-Type: application/json' \
-d '{
"body_html": "<p>Thanks Alex — how about Thursday?</p>"
}'Forward instead with POST /v1/threads/{id}/forward when you need to hand the thread off.
Success: the response includes a message job id.
4. Track the send
Poll the job until it finishes:
curl -sS 'https://api.getfurnace.io/v1/message-jobs/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer f_your_key_here'While it is still queued you can:
# Cancel
curl -sS -X POST 'https://api.getfurnace.io/v1/message-jobs/a1b2c3d4-e5f6-7890-abcd-ef1234567890/cancel' \
-H 'Authorization: Bearer f_your_key_here'
# Or send immediately
curl -sS -X POST 'https://api.getfurnace.io/v1/message-jobs/a1b2c3d4-e5f6-7890-abcd-ef1234567890/send-now' \
-H 'Authorization: Bearer f_your_key_here'Success: the job reaches a terminal status (sent or cancelled). Prefer email.sent webhooks if you do not want to poll.
5. Organize the thread (optional)
Typical triage actions:
- Categorize, mark read, or change status:
PATCH /v1/threads/{id} - Set or clear out-of-office:
POST /v1/threads/{id}/out-of-office - Add or remove tags:
POST /v1/threads/{id}/tags:addandPOST /v1/threads/{id}/tags:remove
6. Get notified when replies arrive
Instead of polling threads, wire Webhook integration and enable email-activity events such as reply.received and reply.categorized. Payload examples live under Webhook events in the sidebar.
Common mistakes
| Symptom | Likely cause |
|---|---|
| Reply endpoint returned but mail never sent | Message job still queued or failed — poll GET /v1/message-jobs/{id} |
| Empty thread list | Wrong account key, or no inbound mail yet on those mailboxes |
| Missing reply body in your app | Reading thread list only — load …/messages for bodies |
Next
- Manage who is in the campaign with Lead management.
- Every thread and message field is in the API Reference.