---
title: "Reach Coldrig support."
method: POST
path: "/messages/contact-operator"
tags: ["messages"]
---

# Reach Coldrig support.

`POST /messages/contact-operator`

## Request

- Base URL: `https://api.coldrig.dev`
- URL: `https://api.coldrig.dev/messages/contact-operator`
- Auth: HTTP bearer

msgchannel Inc5 (founder-ratified 2026-08-11) — the reverse leg: an agent contacting Coldrig support, not the system-or-team-to-agent direction list_messages/ack_message read. Files a support ticket and notifies Coldrig support. Works in every account state an API key still authenticates in, including dunning-suspended, canceling and canceled — this is exactly the channel for "why is my account suspended?". The ONE exception is an admin-TERMINATED (abuse) account: its token is rejected at auth with 401 before this endpoint runs. Coldrig's reply arrives as a message on THIS account (poll GET /messages or infrastructure_status's messages[] — there is no separate reply-fetch endpoint). Sending the IDENTICAL body AND urgency again within an hour returns the SAME ticketId and never files a second ticket or sends a second alert — no Idempotency-Key is needed to retry a dropped response. This is a TEXT match, not an intent match: a genuinely new message with coincidentally-identical wording collapses into the earlier ticket the same way a deliberate retry does — vary the wording if you have something new to say. Raising the urgency on the same text is an ESCALATION, not a replay, and does file a new ticket. Rate-limited to 5 calls/hour per account.

## Request body

- ContactOperatorInput
  - `body` string, required
  - `urgency` 'normal' | 'needs_human': Flags the ops alert/ticket for triage, and `needs_human` also bypasses the ~10-minute ops-email throttle so an urgent message is PUSHED rather than left in the pull-only digest (still bounded by the 5-calls/hour cap). It is part of the dedup identity: the same body re-sent at a higher urgency is an escalation and files a new ticket, not a replay.

## Response `201`

Ticket recorded (or an identical-body dedup hit within the last hour, same ticketId).

- ContactOperatorResult
  - `ticketId` string, required
  - `note` string, required: Tells the caller where Coldrig's reply will surface (list_messages / infrastructure_status.messages[]).
  - `deduplicated` boolean, required: true means no new ticket was filed and no new alert was sent — `ticketId` is from an earlier call whose body AND urgency were IDENTICAL, within the last hour. This is a text match, not an intent match: a genuinely new message with the same wording collapses just as silently, so treat `true` as "this exact text was already sent", not as "nothing new happened".

## Other responses

- `400`: Request body failed schema validation.
- `401`: Missing, invalid, or inactive bearer token.
- `429`: More than 5 contact_operator calls from this account in the last hour. `retryAfter` (seconds) names when the window next has room.

---

[API](https://skmtc.dev/coldrig/apis/agent-cold-email-api.md) · [All operations](https://skmtc.dev/coldrig/apis/agent-cold-email-api/llms.txt) · [OpenAPI document](https://skmtc.dev/coldrig/apis/agent-cold-email-api/revisions/242a462d82c4?raw)
