cURL
curl --request POST \
--url https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-workspace-id: <x-workspace-id>' \
--header 'x-workspace-slug: <x-workspace-slug>' \
--data '
{
"dispositionCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": "<string>"
}
'import requests
url = "https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes"
payload = {
"dispositionCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"x-workspace-slug": "<x-workspace-slug>",
"x-workspace-id": "<x-workspace-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-workspace-slug': '<x-workspace-slug>',
'x-workspace-id': '<x-workspace-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({dispositionCodeId: '3c90c3cc-0d44-4b50-8888-8dd25736052a', note: '<string>'})
};
fetch('https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dispositionCodeId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'note' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-api-key: <x-api-key>",
"x-workspace-id: <x-workspace-id>",
"x-workspace-slug: <x-workspace-slug>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes"
payload := strings.NewReader("{\n \"dispositionCodeId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"note\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("x-workspace-slug", "<x-workspace-slug>")
req.Header.Add("x-workspace-id", "<x-workspace-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes")
.header("x-api-key", "<x-api-key>")
.header("x-workspace-slug", "<x-workspace-slug>")
.header("x-workspace-id", "<x-workspace-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dispositionCodeId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"note\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["x-workspace-slug"] = '<x-workspace-slug>'
request["x-workspace-id"] = '<x-workspace-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dispositionCodeId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"note\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ticketId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dispositionCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pathSnapshot": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Ticket Dispositions
Attach disposition code
Set or replace the disposition code on a ticket.
POST
/
tickets
/
{ticketId}
/
disposition-codes
cURL
curl --request POST \
--url https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-workspace-id: <x-workspace-id>' \
--header 'x-workspace-slug: <x-workspace-slug>' \
--data '
{
"dispositionCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": "<string>"
}
'import requests
url = "https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes"
payload = {
"dispositionCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"x-workspace-slug": "<x-workspace-slug>",
"x-workspace-id": "<x-workspace-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-workspace-slug': '<x-workspace-slug>',
'x-workspace-id': '<x-workspace-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({dispositionCodeId: '3c90c3cc-0d44-4b50-8888-8dd25736052a', note: '<string>'})
};
fetch('https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dispositionCodeId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'note' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-api-key: <x-api-key>",
"x-workspace-id: <x-workspace-id>",
"x-workspace-slug: <x-workspace-slug>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes"
payload := strings.NewReader("{\n \"dispositionCodeId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"note\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("x-workspace-slug", "<x-workspace-slug>")
req.Header.Add("x-workspace-id", "<x-workspace-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes")
.header("x-api-key", "<x-api-key>")
.header("x-workspace-slug", "<x-workspace-slug>")
.header("x-workspace-id", "<x-workspace-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dispositionCodeId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"note\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.oration.ai/api/v2/tickets/{ticketId}/disposition-codes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["x-workspace-slug"] = '<x-workspace-slug>'
request["x-workspace-id"] = '<x-workspace-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dispositionCodeId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"note\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ticketId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dispositionCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pathSnapshot": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"note": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Attach a disposition code to a ticket. If the ticket already has one, this replaces it. The ticket type must have a disposition code set configured in the dashboard.
Pick a valid
dispositionCodeId from List available disposition codes.
Path parameters
string
required
Ticket UUID.
Request body
The ticketticketId comes from the URL path — do not include it in the body.
string
required
Disposition code UUID from the available list.
string
Optional note explaining why this disposition was chosen.
The attach response is the linker row only — it does not include a nested
dispositionCode object (unlike List ticket disposition codes). Attaching or replacing a disposition triggers a ticket.updated webhook with the full ticket row.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Minimum string length:
1Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Path Parameters
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Body
application/json
Response
Successful response
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$⌘I