Tickets

Tickets

Tickets and messages. Priority: low, normal, high, urgent (invalid → normal). Scope: tickets.read / tickets.write.

List tickets

GET /v1/tickets
tickets.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Query
Name Type Description
page integer Page number (from 1, default 1)
per_page integer Items per page (default 25, max 200)
legacy_status_id integer Legacy integer filter; removed in v2.
legacy_team_id integer
legacy_channel_id integer
search string Free-text search
Request body

None

Response
data array
id string
number string
subject string
status string

Ticket_Status_Name (tenant-defined; not a closed enum)

priority string

Invalid values are coerced to `normal`.

Enum
low normal high urgent
Example: normal
client_name string
client_email string
client_id string Nullable
project_id string Nullable
created_at string
meta object
page integer
per_page integer
total integer
pages integer

Examples

GET /v1/tickets
curl -X GET "https://api.appficient.nl/v1/tickets" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

Create a ticket

POST /v1/tickets
tickets.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Headers
Name Type Description
Idempotency-Key string Optional on POST only; cached 24h; replay returns X-Idempotent-Replay
Request body
subject string Required
legacy_team_id integer

Legacy integer input only; removed in v2.

legacy_channel_id integer

Legacy integer input only; removed in v2.

legacy_status_id integer

Legacy integer input only; removed in v2.

priority string

Invalid values are coerced to `normal`.

Enum
low normal high urgent
Example: normal
client_name string
client_email string
client_id string
legacy_assigned_user_id integer

Legacy integer input only; removed in v2.

legacy_project_id integer

Legacy integer input only; removed in v2.

legacy_contact_id integer

Legacy integer input only; removed in v2.

Response
data object

ID-only (UUID). Team/status/channel have no Guid columns — ints omitted from response. `status` is the tenant status name string.

id string
number string
subject string
status string

Ticket_Status_Name (tenant-defined; not a closed enum)

priority string

Invalid values are coerced to `normal`.

Enum
low normal high urgent
Example: normal
client_name string
client_email string
client_id string Nullable
project_id string Nullable
created_at string
source string
Example: api
updated_at string
closed_at string Nullable
meta object

Examples

POST /v1/tickets
curl -X POST "https://api.appficient.nl/v1/tickets" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "string",
    "legacy_team_id": 0,
    "legacy_channel_id": 0,
    "legacy_status_id": 0,
    "priority": "normal",
    "client_name": "string",
    "client_email": "string",
    "client_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "legacy_assigned_user_id": 0,
    "legacy_project_id": 0,
    "legacy_contact_id": 0
}'

Curl, Node and response are shown to the right of this endpoint.

Retrieve a ticket

GET /v1/tickets/{id}
tickets.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body

None

Response
data object

ID-only (UUID). Team/status/channel have no Guid columns — ints omitted from response. `status` is the tenant status name string.

id string
number string
subject string
status string

Ticket_Status_Name (tenant-defined; not a closed enum)

priority string

Invalid values are coerced to `normal`.

Enum
low normal high urgent
Example: normal
client_name string
client_email string
client_id string Nullable
project_id string Nullable
created_at string
source string
Example: api
updated_at string
closed_at string Nullable
meta object

Examples

GET /v1/tickets/{id}
curl -X GET "https://api.appficient.nl/v1/tickets/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

Update a ticket

PATCH /v1/tickets/{id}
tickets.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body
subject string
legacy_team_id integer

Legacy integer input only; removed in v2.

legacy_channel_id integer

Legacy integer input only; removed in v2.

legacy_status_id integer

Legacy integer input only; removed in v2.

priority string

Invalid values are coerced to `normal`.

Enum
low normal high urgent
Example: normal
client_name string
client_email string
client_id string
legacy_assigned_user_id integer

Legacy integer input only; removed in v2.

legacy_project_id integer

Legacy integer input only; removed in v2.

legacy_contact_id integer

Legacy integer input only; removed in v2.

Response
data object

ID-only (UUID). Team/status/channel have no Guid columns — ints omitted from response. `status` is the tenant status name string.

id string
number string
subject string
status string

Ticket_Status_Name (tenant-defined; not a closed enum)

priority string

Invalid values are coerced to `normal`.

Enum
low normal high urgent
Example: normal
client_name string
client_email string
client_id string Nullable
project_id string Nullable
created_at string
source string
Example: api
updated_at string
closed_at string Nullable
meta object

Examples

PATCH /v1/tickets/{id}
curl -X PATCH "https://api.appficient.nl/v1/tickets/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "string",
    "legacy_team_id": 0,
    "legacy_channel_id": 0,
    "legacy_status_id": 0,
    "priority": "normal",
    "client_name": "string",
    "client_email": "string",
    "client_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "legacy_assigned_user_id": 0,
    "legacy_project_id": 0,
    "legacy_contact_id": 0
}'

Curl, Node and response are shown to the right of this endpoint.

List messages for a ticket

GET /v1/tickets/{id}/messages
tickets.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Request body

None

Response
data array
id string
direction string

API-created messages are always `out`.

Enum
in out
type string
Enum
reply note
Example: note
body string
created_at string
author object
name string
email string
meta object

Examples

GET /v1/tickets/{id}/messages
curl -X GET "https://api.appficient.nl/v1/tickets/{id}/messages" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

Create a ticket message

POST /v1/tickets/{id}/messages
tickets.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
Headers
Name Type Description
Idempotency-Key string Optional on POST only; cached 24h; replay returns X-Idempotent-Replay
Request body
body string
html string
type string
Enum
reply note
Example: note
to string
cc string
author_name string
author_email string
plain_text_body boolean
author_user_id integer

Staff user id used as message author when provided.

Response
data object

ID-only (UUID); no message `id` / `author.user_id`.

id string
direction string

API-created messages are always `out`.

Enum
in out
type string
Enum
reply note
Example: note
body string
created_at string
author object
name string
email string
meta object
via_staff_save boolean

Examples

POST /v1/tickets/{id}/messages
curl -X POST "https://api.appficient.nl/v1/tickets/{id}/messages" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "string",
    "html": "string",
    "type": "note",
    "to": "string",
    "cc": "string",
    "author_name": "string",
    "author_email": "string",
    "plain_text_body": false,
    "author_user_id": 0
}'

Curl, Node and response are shown to the right of this endpoint.

Retrieve a ticket message

GET /v1/tickets/{id}/messages/{message_id}
tickets.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Name Type Description
id Required string Resource id (UUID, lowercase)
message_id Required string
Request body

None

Response
data object

ID-only (UUID); no message `id` / `author.user_id`.

id string
direction string

API-created messages are always `out`.

Enum
in out
type string
Enum
reply note
Example: note
body string
created_at string
author object
name string
email string
meta object

Examples

GET /v1/tickets/{id}/messages/{message_id}
curl -X GET "https://api.appficient.nl/v1/tickets/{id}/messages/{message_id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

List ticket channels

GET /v1/ticket-channels
tickets.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Query
Name Type Description
active string 1 = active (default), 0 = inactive
Request body

None

Response
data array
id string

Channel UUID.

name string
email string

Channel mailbox address when configured.

from_email string

Verified outbound from-address when configured.

from_name string
inbound_email string

Appficient inbound address — forward mail to this address.

forwarding_emails array

Known source addresses that forward into this channel.

active boolean
order integer
meta object

Examples

GET /v1/ticket-channels
curl -X GET "https://api.appficient.nl/v1/ticket-channels" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.

List ticket statuses

GET /v1/ticket-statuses
tickets.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Query
Name Type Description
active string 1 = active (default), 0 = inactive
Request body

None

Response
data array
id string

Unique status identifier.

name string

Display name of the status.

active boolean

Whether the status is active.

order integer

Sort order in the status list.

meta object

Examples

GET /v1/ticket-statuses
curl -X GET "https://api.appficient.nl/v1/ticket-statuses" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node and response are shown to the right of this endpoint.