curl -X PATCH "https://api.foxreach.io/api/v1/inbox/threads/rpl_abc123" \
-H "X-API-Key: otr_your_key" \
-H "Content-Type: application/json" \
-d '{
"isRead": true,
"isStarred": true,
"category": "interested"
}'
from foxreach import FoxReach
from foxreach.types import ThreadUpdate
client = FoxReach(api_key="otr_your_key")
thread = client.inbox.update(
"rpl_abc123",
ThreadUpdate(is_read=True, category="interested", is_starred=True)
)
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const thread = await client.inbox.update("rpl_abc123", {
isRead: true,
category: "interested",
isStarred: true
});
{
"data": {
"id": "rpl_abc123",
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "Re: Quick question about your product",
"bodyPreview": "Hi, thanks for reaching out! I'd love to learn more about...",
"category": "interested",
"isRead": true,
"isStarred": true,
"receivedAt": "2025-01-20T14:30:00",
"leadId": "cld_xyz789",
"campaignId": "cmp_def456"
}
}
Inbox
Update Thread
Update a thread’s read status, starred status, or category.
PATCH
/
api
/
v1
/
inbox
/
threads
/
{reply_id}
curl -X PATCH "https://api.foxreach.io/api/v1/inbox/threads/rpl_abc123" \
-H "X-API-Key: otr_your_key" \
-H "Content-Type: application/json" \
-d '{
"isRead": true,
"isStarred": true,
"category": "interested"
}'
from foxreach import FoxReach
from foxreach.types import ThreadUpdate
client = FoxReach(api_key="otr_your_key")
thread = client.inbox.update(
"rpl_abc123",
ThreadUpdate(is_read=True, category="interested", is_starred=True)
)
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const thread = await client.inbox.update("rpl_abc123", {
isRead: true,
category: "interested",
isStarred: true
});
{
"data": {
"id": "rpl_abc123",
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "Re: Quick question about your product",
"bodyPreview": "Hi, thanks for reaching out! I'd love to learn more about...",
"category": "interested",
"isRead": true,
"isStarred": true,
"receivedAt": "2025-01-20T14:30:00",
"leadId": "cld_xyz789",
"campaignId": "cmp_def456"
}
}
Path Parameters
string
required
The unique identifier of the reply thread.
Body Parameters
boolean
Mark thread as read or unread.
boolean
Star or unstar the thread.
string
Manually override the AI category. One of:
interested, not_interested, out_of_office, uncategorized, unknown.Response
Returns the updated thread object.curl -X PATCH "https://api.foxreach.io/api/v1/inbox/threads/rpl_abc123" \
-H "X-API-Key: otr_your_key" \
-H "Content-Type: application/json" \
-d '{
"isRead": true,
"isStarred": true,
"category": "interested"
}'
from foxreach import FoxReach
from foxreach.types import ThreadUpdate
client = FoxReach(api_key="otr_your_key")
thread = client.inbox.update(
"rpl_abc123",
ThreadUpdate(is_read=True, category="interested", is_starred=True)
)
import { FoxReach } from "foxreach";
const client = new FoxReach({ apiKey: "otr_your_key" });
const thread = await client.inbox.update("rpl_abc123", {
isRead: true,
category: "interested",
isStarred: true
});
{
"data": {
"id": "rpl_abc123",
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "Re: Quick question about your product",
"bodyPreview": "Hi, thanks for reaching out! I'd love to learn more about...",
"category": "interested",
"isRead": true,
"isStarred": true,
"receivedAt": "2025-01-20T14:30:00",
"leadId": "cld_xyz789",
"campaignId": "cmp_def456"
}
}
Errors
| Status | Description |
|---|---|
404 | Thread not found |
422 | Invalid category value |
Rate Limit
- 100 requests per minute, per API key. Fixed 60-second window.
- Every response includes
X-RateLimit-Limit,X-RateLimit-Remaining, andX-RateLimit-Reset(unix epoch seconds). - A
429response includes aRetry-Afterheader (seconds until the bucket resets).
Retry-After, exponential backoff, monitoring X-RateLimit-Remaining), see Rate Limiting.