Skip to content

Statuses, Priorities & Tags

These are the conversation taxonomies you customise per-workspace. Out of the box HelperIQ ships with reasonable defaults — most teams just add a tag or two and leave the rest.

Statuses

The conversation lifecycle states. Default set: Open, Snoozed, Resolved, Closed, Spam, Trashed.

MethodPathPermission
GET/api/v1/statusesauthenticated
POST/api/v1/statusesstatus:manage
PUT/api/v1/statuses/{id}status:manage
PUT/api/v1/statuses/{id}/colorstatus:manage
DELETE/api/v1/statuses/{id}status:manage

List statuses

GET /api/v1/statuses

Returns the full status set in display order.

Response:

json
{
  "data": [
    { "id": 1, "name": "Open",     "color": "#F59E0B", "system": true,  "sort_order": 1 },
    { "id": 2, "name": "Snoozed",  "color": "#A78BFA", "system": true,  "sort_order": 2 },
    { "id": 3, "name": "Resolved", "color": "#10B981", "system": true,  "sort_order": 3 },
    { "id": 4, "name": "Closed",   "color": "#6B7280", "system": true,  "sort_order": 4 },
    { "id": 5, "name": "Spam",     "color": "#EF4444", "system": true,  "sort_order": 5 },
    { "id": 6, "name": "Trashed",  "color": "#6B7280", "system": true,  "sort_order": 6 }
  ]
}

system: true statuses can be renamed and recoloured but not deleted — they have hard-coded semantics in routing, SLA, and reporting.

Create custom status

POST /api/v1/statuses

Body:

json
{ "name": "Waiting on Customer", "color": "#3B82F6", "sort_order": 7 }

Custom statuses don't trigger any built-in behaviour — they're for your own workflow tracking. Conversations in a custom status behave like Open for SLA and notification purposes.

Update / colour-only update

PUT /api/v1/statuses/{id}              { "name": "...", "color": "...", "sort_order": ... }
PUT /api/v1/statuses/{id}/color        { "color": "#…" }

The split exists because admins recolour statuses far more often than they rename — the colour-only path lets the UI's colour-picker save without sending the rest of the form.

Delete custom status

DELETE /api/v1/statuses/{id}

Only custom statuses are deletable. Conversations in the deleted status are auto-migrated to Open.

Priorities

MethodPathPermission
GET/api/v1/prioritiesauthenticated

Priorities are read-only — fixed set: Low, Medium, High, Urgent. Used for filtering, SLA escalation, and the priority dot in the conversation list.

json
{
  "data": [
    { "id": 1, "name": "Low" },
    { "id": 2, "name": "Medium" },
    { "id": 3, "name": "High" },
    { "id": 4, "name": "Urgent" }
  ]
}

To change a conversation's priority, use PUT /api/v1/conversations/{uuid}/priority.

Tags

Free-form labels you attach to conversations. Tags are workspace-wide and reusable.

MethodPathPermission
GET/api/v1/tagsauthenticated
POST/api/v1/tagstags:manage
PUT/api/v1/tags/{id}tags:manage
DELETE/api/v1/tags/{id}tags:manage
POST/api/v1/tags/importtags:manage
GET/api/v1/tags/import/statustags:manage

List tags

GET /api/v1/tags

Returns every tag (no pagination — there's rarely a useful reason to have hundreds).

json
{
  "data": [
    { "id": 1, "name": "billing" },
    { "id": 2, "name": "vip" },
    { "id": 3, "name": "feature-request" }
  ]
}

Create / update tag

POST /api/v1/tags                  { "name": "billing" }
PUT  /api/v1/tags/{id}             { "name": "billing-renamed" }
DELETE /api/v1/tags/{id}

Tag names are unique. Deleting a tag removes it from every conversation.

Bulk import

POST /api/v1/tags/import

Multipart upload — one tag name per line in a CSV. Runs async, status available at GET /api/v1/tags/import/status.

Attaching tags to a conversation

Use POST /api/v1/conversations/{uuid}/tags — accepts a JSON array that replaces the conversation's full tag set (not append).

Naming length limits

ResourceMax length
Status name64 chars
Tag name64 chars
Custom attribute key64 chars
Macro name140 chars
Macro message_content5000 chars

Released under AGPL-3.0. HelperIQ is a fork of LibreDesk.