Support tickets
Open support tickets with the Blooio team, reply to them, close them, and check on call-forwarding requests.
A support ticket is a conversation between your organization and the Blooio team. The same tickets show in the dashboard under Tickets in the account menu, so a ticket opened over the API can be followed up from either place.
Call-forwarding requests are tickets too. When you ask Blooio to forward a number's calls, you get back a ticket_id, and you check on the request by reading that ticket.
Open a ticket
curl -X POST https://api.blooio.com/v4/tickets \
-H "Authorization: Bearer api_..." \
-H "Content-Type: application/json" \
-d '{ "type": "technical", "content": "Messages from +15551230001 are stuck as sent." }'Try ittype is one of support, billing, technical, feature_request, or call_forwarding. content is the request itself, up to 10,000 characters.
{
"data": {
"id": "tkt_...",
"type": "technical",
"status": "open",
"priority": "medium",
"content": "Messages from +15551230001 are stuck as sent.",
"forwarding": null,
"can_comment": true,
"created_at": 1735689600000,
"updated_at": 1735689600000
}
}Priority is set by Blooio support
Every ticket opens at
medium. Blooio support raises or lowers it as they triage.priorityis read-only: sending it when you open or update a ticket returns422 priority_not_allowed.
Follow a ticket
List your tickets, newest first, with the usual cursor pagination. Filter by status or type:
curl "https://api.blooio.com/v4/tickets?status=waiting_on_customer" \
-H "Authorization: Bearer api_..."Try itA ticket's status is one of:
| Status | Meaning |
|---|---|
open |
Not picked up yet. |
in_progress |
Blooio support is working on it. |
waiting_on_customer |
Support needs a reply from you. |
closed |
Resolved. |
Read the conversation with GET /v4/tickets/{ticket_id}/comments, and reply with:
curl -X POST https://api.blooio.com/v4/tickets/tkt_.../comments \
-H "Authorization: Bearer api_..." \
-H "Content-Type: application/json" \
-d '{ "content": "Here is the message id: msg_..." }'Try itReplying to a ticket that is waiting_on_customer moves it back to in_progress. Closed tickets don't take replies, and neither do tickets Blooio opens for you, such as purchase records. Those return can_comment: false.
Close a ticket
Close a ticket you no longer need:
curl -X PATCH https://api.blooio.com/v4/tickets/tkt_... \
-H "Authorization: Bearer api_..." \
-H "Content-Type: application/json" \
-d '{ "status": "closed" }'Try itstatus is the only field you can change. Purchase, system, and billing tickets are managed by Blooio and return 403.
Check a call-forwarding request
Request forwarding for a dedicated or inbound number you own:
curl -X POST https://api.blooio.com/v4/me/numbers/%2B15551230001/call-forwarding \
-H "Authorization: Bearer api_..." \
-H "Content-Type: application/json" \
-d '{ "forward_to": "+15557654321" }'Try it{
"data": {
"success": true,
"ticket_id": "tkt_...",
"status": "open",
"number": "+15551230001",
"forward_to": "+15557654321"
}
}Forwarding isn't instant. Poll the ticket for its forwarding block:
curl https://api.blooio.com/v4/tickets/tkt_... \
-H "Authorization: Bearer api_..."Try it{
"data": {
"id": "tkt_...",
"type": "call_forwarding",
"status": "in_progress",
"priority": "medium",
"content": "Please forward +15551230001 to +15557654321",
"forwarding": {
"state": "in_progress",
"source_number": "+15551230001",
"destination_number": "+15557654321",
"completed_at": null
},
"can_comment": true,
"created_at": 1735689600000,
"updated_at": 1735689660000
}
}forwarding.state |
Meaning |
|---|---|
pending |
Not started yet. |
in_progress |
Blooio is setting up forwarding with the carrier. |
completed |
Calls to the source number now forward. completed_at says when. |
failed |
The last attempt failed, and the ticket stays open with Blooio support. |
Blooio closes the ticket once forwarding is in place, so a closed ticket always reads completed, whatever its last attempt reported. Poll every minute or so until state is completed, and read the ticket's comments if it reads failed.
Scopes
API keys can call every endpoint on this page. Blooio Apps need these scopes:
| Operation | Endpoint | Scope |
|---|---|---|
| List / get tickets | GET /v4/tickets, GET /v4/tickets/{ticket_id} |
tickets:read |
| List comments | GET /v4/tickets/{ticket_id}/comments |
tickets:read |
| Open a ticket | POST /v4/tickets |
tickets:write |
| Reply | POST /v4/tickets/{ticket_id}/comments |
tickets:write |
| Close a ticket | PATCH /v4/tickets/{ticket_id} |
tickets:write |
| Request call forwarding | POST /v4/me/numbers/{number}/call-forwarding |
numbers:manage |
An app that requests call forwarding and then checks on it needs both numbers:manage and tickets:read.