Help desk

Update a ticket

ticket_update · Changes data · Markdown

Changes a ticket's status, priority, category, subject, tags, fields, assignee, or the CRM records it is about.

$0.01 a call

From your agent’s balance. A call that fails costs nothing.

An example

Paul has his bike back and is happy. Close ticket 87 and send him the satisfaction survey.

Your agent callsticket_update$0.01 a call

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "number": 87,
  "status": "resolved",
  "ask_rating": true
}
What comes back
{
  "ticket": {
    "number": 87,
    "subject": "Scratch on the Tabor's top tube",
    "status": "resolved",
    "priority": "high",
    "category": "Damaged delivery",
    "tags": [
      "damage"
    ],
    "requester_email": "paul.hoffmann@example.com",
    "requester_name": "Paul Hoffmann",
    "contact_id": null,
    "company_id": null,
    "source": "api",
    "channel": "api",
    "assigned_to": null,
    "waiting_on": null,
    "sla": null,
    "merged_into": null,
    "created_at": "2026-10-14T08:00:00+00:00",
    "last_activity_at": "2026-10-14T08:00:00+00:00",
    "first_reply_at": null,
    "resolved_at": "2026-10-14T08:00:00+00:00"
  },
  "rating_request": "sent"
}

Use it when

A ticket changes hands, priority or state, or is resolved.

  • For an answer to the customer at the same time, use ticket_reply.

What it does

Change a ticket: status (open, pending = waiting on the customer, resolved), priority (its SLA targets follow), category, subject, tags, custom fields, the bot it is assigned to ("me", another bot's name, or "" for nobody) and the CRM contact or company it is about (0 unlinks). Resolving emails the requester a satisfaction survey when the settings ask for one; ask_rating true or false decides for this call (true also works on a ticket already resolved).

What comes back

The ticket as it now is, and the rating request when a survey was emailed. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
numberRequiredintegerThe ticket number, e.g. 42 for ticket #42. At least 1.
statusstringOne of: open,pending,resolved.
prioritystringOne of: low,normal,high,urgent.
categorystringUp to 80 characters.
subjectstring1 to 200 characters.
add_tagsarray of stringsShort labels like "refund" or "vip" (kept lower-case, spaces become dashes). Up to 20 items.
remove_tagsarray of stringsShort labels like "refund" or "vip" (kept lower-case, spaces become dashes). Up to 20 items.
fieldsobjectCustom fields like {"order_id": "1042"}, merged into the ticket's fields; null removes one.
assign_tostringUp to 80 characters.
contact_idintegerAt least 0.
company_idintegerAt least 0.
ask_ratingboolean

The call

Over MCP, call ticket_update on https://api.conecto.chat/mcp/helpdesk. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/ticket_update \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"number":87,"status":"resolved","ask_rating":true}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No ticket of the business has that number.Find it with ticket_list and use its number.
not_found404No contact, company or agent matches what was given.Use ids from crm_search, and assign_to "me", a key's bot name, or "" for nobody.
invalid_input400A rating was asked for on a ticket that is not resolved, or a tag is not valid.Send status "resolved" together with ask_rating: true.
ambiguous409Several agents have the name in assign_to.Let the agent meant claim it with assign_to "me".
too_many422The ticket would hold more tags or custom fields than it may.Remove some with remove_tags, or set fields to null, first.
payment_required_for_outbound402The balance is still free credit, which cannot email people outside the business.Top up once (POST /v1/topups); after that email to outsiders works.
new_recipient_limit429The business has emailed as many new addresses today as it may.Send to these people tomorrow. Replies and people who wrote first are not limited.
sending_paused403Email from the business is paused after bounces, complaints or emails refused as cold outreach.Tell the owner; Conecto reviews the pause before sending resumes.
suppressed422An address bounced, complained or unsubscribed before.Remove the addresses the message lists and send again.
found_by_lookup422An address was found or checked with Conecto's lookups; a Conecto inbox never writes to it first.Write from the business's own mailbox (google_mail_send or m365_mail_send).
cold_email422The email looks like cold outreach, a pitch or a request to people who never wrote to the business, so it wasn't sent. The third within 7 days pauses the account's email.Email only people who wrote first or asked to hear from the business.
check_unavailable503The check an email to someone new goes through couldn't run just now.Try again in a minute.
send_failed502The email service did not accept the email.Call again in a moment.
sending_unavailable503Email to outsiders is not possible yet while the sending account is in review.Send to the owner's address for now, or try again later.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md