GET /v1/lines/{lineId}/reputation
How one of your lines is doing with recipients and Apple — its status, every measure beside its limit, what to do about it, and the last seven days.
GET /v1/lines/{lineId}/reputationUse this to see a slow-down coming before it happens. A line is graded on two axes: load, what it sends before anyone reacts (new chats, sends per day and per hour, people reached), and quality, how recipients and Apple react (delivered share, sends with no known outcome, reply rate, opt-outs). Every measure is published beside the limit it is read against, so a reading such as "38 of 50 new chats" is one you can act on before the status moves.
The status is the worse of the two axes:
| Status | What to do |
|---|---|
HEALTHY | Send normally. |
AT_RISK | Slow down on new cold chats, and keep replying. |
CRITICAL | Stop opening cold chats. Replies and warm chats are fine. |
FLAGGED | Rest the line, and use another of your lines for new chats. |
actionItems says what to do in words, most important first. A reading is
taken about every 15 minutes. GET /v1/whoami carries each
line's status in a word under lines[].reputation; this route is the full
reading.
curl https://api.mapier.ai/v1/lines/0192a7b0-3e4f-7051-8c6d-7e8f9a0b1c2d/reputation \
-H "Authorization: Bearer $MAPIER_API_KEY" \
-H "x-mapier-version: 2026-10-15"Request
Prop
Type
Response
{
"lineId": "0192a7b0-3e4f-7051-8c6d-7e8f9a0b1c2d",
"reputation": {
"status": "AT_RISK",
"confidence": "ok",
"confidenceReasons": [],
"computedAt": "2026-10-16T14:15:00.000Z",
"policyVersion": "2026-10-15b",
"primaryDriver": {
"axis": "load",
"key": "cold_new_chats_24h",
"summary": "20 of 30 new chats opened by the line in the last 24 hours"
},
"load": {
"status": "AT_RISK",
"components": [
{
"key": "cold_new_chats_24h",
"value": 20,
"limit": 30,
"unit": "count",
"status": "warn",
"note": "New chats we opened in 24 hours, group creates included."
}
]
},
"quality": {
"status": "HEALTHY",
"components": [
{
"key": "cold_reply_rate_7d",
"value": 0.29,
"limit": 0.15,
"unit": "share",
"status": "ok"
}
]
},
"chats": {
"active": 186,
"counts": { "HEALTHY": 171, "AT_RISK": 9, "CRITICAL": 2, "OPTED_OUT": 4 }
},
"actionItems": [
{
"key": "pace_new_chats",
"title": "Pace new chats",
"detail": "20 of 30 new chats opened by the line in the last 24 hours. Hold new cold chats until the count falls; replies and warm chats are fine."
}
]
},
"history": [
{ "computedAt": "2026-10-16T14:00:00.000Z", "status": "HEALTHY" },
{ "computedAt": "2026-10-16T14:15:00.000Z", "status": "AT_RISK" }
]
}Prop
Type
reputation
Prop
Type
components[] item
Prop
Type
With a test key
A test line has no reading, so a test key always gets reputation: null and
an empty history for its sandbox lines.
Errors
| Status | Code | Cause |
|---|---|---|
401 | invalid_credentials | No key, or one that is unknown, revoked or expired |
404 | not_found | No line this key can see has that id: it never existed, or it is another project's or the other environment's |
409 | project_archived | The project is archived |
422 | validation_failed | lineId is not a UUID, or an x-mapier-version this build does not answer to |
429 | rate_limited | 60 requests per minute, per key; the Retry-After header says how long to wait |
500 | internal_error | An unhandled failure, reported; details.requestId names the log line when present |
503 | service_busy | The platform had no database connection free in time and did nothing; wait details.retryAfter seconds and ask again |
503 | upstream_unavailable | The service could not answer |