---
name: "ticket_create"
area: "helpdesk"
title: "Open a ticket"
price: "$0.01"
method: "POST"
url: "https://api.conecto.chat/v1/tools/ticket_create"
mcp_server: "https://api.conecto.chat/mcp/helpdesk"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/helpdesk/ticket_create"
---

# Open a ticket (`ticket_create`)

Opens a support ticket for a customer request; the customer is emailed only if you ask.

Open a support ticket for a customer request (email to a support inbox opens one by itself; see ticket_connect_inbox). The requester is not emailed unless email_requester is true: then they get the usual acknowledgement, from the account's support inbox when it has one, so their answer comes back to this ticket.

Price: $0.01 a call. A call that fails costs nothing.

## Use it when

A request came by phone, chat or in person and should be tracked as a ticket.

- For turning every email to an inbox into tickets, use [ticket_connect_inbox](https://conecto.chat/tools/helpdesk/ticket_connect_inbox.md).

## Say this to your agent

> Paul Hoffmann called: the Tabor gravel bike we shipped him arrived with a scratch on the top tube. Open a high-priority ticket with order 2231 on it.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `email` | string | yes | Up to 254 characters. |  |  |
| `name` | string | no | Up to 255 characters. |  |  |
| `message` | string | yes | 1 to 20,000 characters. |  |  |
| `subject` | string | no | Defaults to the first line of message. Up to 200 characters. |  |  |
| `priority` | string | no |  | `"low"`, `"normal"`, `"high"`, `"urgent"` |  |
| `category` | string | no | Up to 80 characters. |  |  |
| `tags` | array of strings | no | Short labels like "refund" or "vip" (kept lower-case, spaces become dashes). Up to 20 items. |  |  |
| `fields` | object | no | Custom fields like {"order_id": "1042"}, merged into the ticket's fields; null removes one. |  |  |
| `company_id` | integer | no | The CRM company this request is about. At least 1. |  |  |
| `email_requester` | boolean | no |  |  | `false` |

## Example

Written for Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon.

MCP: call `ticket_create` on the MCP server `https://api.conecto.chat/mcp/helpdesk` with these arguments:

```json
{
  "email": "paul.hoffmann@example.com",
  "name": "Paul Hoffmann",
  "subject": "Scratch on the Tabor's top tube",
  "message": "Called on Wednesday: the Tabor gravel bike delivered on Monday has a 3 cm scratch on the top tube. He would like it touched up or the frame swapped.",
  "priority": "high",
  "category": "Damaged delivery",
  "tags": [
    "damage"
  ],
  "fields": {
    "order_id": "2231"
  }
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/ticket_create \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "paul.hoffmann@example.com", "name": "Paul Hoffmann", "subject": "Scratch on the Tabor'\''s top tube", "message": "Called on Wednesday: the Tabor gravel bike delivered on Monday has a 3 cm scratch on the top tube. He would like it touched up or the frame swapped.", "priority": "high", "category": "Damaged delivery", "tags": ["damage"], "fields": {"order_id": "2231"}}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "ticket_create",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.01",
  "balance_usd": "$19.75",
  "result": {
    "ticket": {
      "number": 1,
      "subject": "Scratch on the Tabor's top tube",
      "status": "open",
      "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": "us",
      "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": null
    }
  }
}
```

`result`: The ticket as opened, and with email_requester: true, whether the acknowledgement email went out.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `invalid_input` | 400 | A tag has characters a tag cannot have. | Use up to 40 letters, digits, dashes, dots, colons or slashes, starting with a letter or digit. |
| `not_found` | 404 | No company of the business has that company_id. | Find it with crm_find_companies and use its id. |
| `payment_required_for_outbound` | 402 | The 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_limit` | 429 | The 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_paused` | 403 | Email from the business is paused after bounces, complaints or emails refused as cold outreach. | Tell the owner; Conecto reviews the pause before sending resumes. |
| `suppressed` | 422 | An address bounced, complained or unsubscribed before. | Remove the addresses the message lists and send again. |
| `found_by_lookup` | 422 | An 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_email` | 422 | The 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_unavailable` | 503 | The check an email to someone new goes through couldn't run just now. | Try again in a minute. |
| `send_failed` | 502 | The email service did not accept the email. | Call again in a moment. |
| `sending_unavailable` | 503 | Email 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. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [ticket_list](https://conecto.chat/tools/helpdesk/ticket_list.md): Tickets, newest activity first, filtered by status, priority, requester, tag, field or contact, or as a work queue. Free up to 1,000,000 reads a month.
- [ticket_get](https://conecto.chat/tools/helpdesk/ticket_get.md): One ticket with its request, every reply, customer message and note, its fields, SLA state and rating. Free up to 1,000,000 reads a month.
- [ticket_reply](https://conecto.chat/tools/helpdesk/ticket_reply.md): Emails the requester a reply in the ticket's thread, with files if needed, or adds a private note, and can set the status. $0.05 a call.
- [ticket_update](https://conecto.chat/tools/helpdesk/ticket_update.md): Changes a ticket's status, priority, category, subject, tags, fields, assignee, or the CRM records it is about. $0.01 a call.
- [ticket_merge](https://conecto.chat/tools/helpdesk/ticket_merge.md): Merges a duplicate ticket into another: its messages, notes, email threads, tags and fields move over. $0.01 a call.
- [ticket_connect_inbox](https://conecto.chat/tools/helpdesk/ticket_connect_inbox.md): Makes an inbox a support inbox: every new email to it opens a ticket, and replies stay in its thread. $0.001 a call.
- [ticket_save_template](https://conecto.chat/tools/helpdesk/ticket_save_template.md): Saves a canned reply under a name, with the status and tags it applies whenever it is sent. $0.001 a call.
- [ticket_list_templates](https://conecto.chat/tools/helpdesk/ticket_list_templates.md): Every saved reply with its text, status and tags. Free up to 1,000,000 reads a month.
- [ticket_delete_template](https://conecto.chat/tools/helpdesk/ticket_delete_template.md): Deletes a saved reply by name. $0.001 a call.
- [ticket_get_settings](https://conecto.chat/tools/helpdesk/ticket_get_settings.md): The help desk's SLA targets, auto-close, satisfaction survey setting and support inboxes. Free up to 1,000,000 reads a month.
- [ticket_update_settings](https://conecto.chat/tools/helpdesk/ticket_update_settings.md): Sets the SLA targets per priority, auto-close and the satisfaction survey. $0.001 a call.
- [ticket_report](https://conecto.chat/tools/helpdesk/ticket_report.md): How support went over the last days: volumes, backlog, response and resolution times, SLA results, ratings, and tickets by channel, priority and tag. Free up to 1,000,000 reads a month.
