curl --request PUT \
--url https://api.stage.origin.one/api/v2/orders/{id}/cancellation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.stage.origin.one/api/v2/orders/{id}/cancellation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.stage.origin.one/api/v2/orders/{id}/cancellation"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"id": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"object": "order",
"code": "CPmJ6QbYMo",
"agency": {
"code": "FAA",
"id": "3",
"object": "agency",
"url": "/api/v2/agencies/3"
},
"clinic": {
"address": {
"city": "Seattle",
"country": "US",
"line1": "123 Main St",
"line2": "Suite 400",
"object": "address",
"postalCode": "98101",
"state": "WA"
},
"id": "42",
"name": "Austin Downtown Clinic",
"object": "clinic",
"phone": "+1-512-555-0100",
"url": "/api/v2/clinics/42"
},
"company": {
"id": "123",
"name": "Acme Inc",
"object": "company",
"url": "/api/v2/companies/123"
},
"createdAt": "2026-09-24T09:00:00.000Z",
"expiresAt": "2026-09-24T15:15:00.000Z",
"isFinal": false,
"jobCategory": {
"id": "3987402f-e963-45a9-8799-b9ea6621adae",
"name": "Flight Crewmember",
"object": "jobCategory",
"url": "/api/v2/agencies/3/jobCategories/3987402f-e963-45a9-8799-b9ea6621adae"
},
"location": {
"id": "456",
"name": "Acme Downtown",
"object": "location",
"url": "/api/v2/locations/456"
},
"otherTestReason": "courtOrdered",
"packages": [
{
"id": "789",
"name": "DOT Pre-Employment Drug Test",
"object": "package",
"url": "/api/v2/packages/789"
}
],
"participant": {
"address": {
"city": "Seattle",
"country": "US",
"line1": "123 Main St",
"line2": "Suite 400",
"object": "address",
"postalCode": "98101",
"state": "WA"
},
"birthDate": "1980-11-11",
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"middleName": "Q",
"phone": "+13033232323",
"identifiers": [
{
"issuingCountry": "US",
"issuingState": "WA",
"object": "participantIdentifier",
"type": "driverLicense",
"value": "D1234567"
}
]
},
"services": [
{
"attributes": {
"category": "standardPanels",
"type": "urine"
},
"courierServiceName": "FedEx",
"id": "<string>",
"isDot": false,
"isFinal": false,
"lab": {
"id": "64cba816-3c52-4a63-9d0e-0f2b5d1a7e11",
"name": "CRL",
"object": "vendor",
"type": "lab"
},
"name": "5 Panel Urine",
"object": "orderService",
"screenHistory": [
{
"object": "orderServiceScreenHistory",
"occurredAt": "2026-09-24T15:15:00.000Z",
"type": "specimenCollected"
}
],
"specimenId": "SP-1",
"status": "pending_collectionCompleted",
"statusHistory": [
{
"groupType": "specimenCollected",
"object": "orderServiceStatusHistory",
"occurredAt": "2026-09-24T15:15:00.000Z",
"status": "pending_collectionCompleted"
}
],
"statusUpdatedAt": "2026-09-24T15:15:00.000Z",
"trackingNumber": "1Z999AA10123456784"
}
],
"status": "pending",
"statusUpdatedAt": "2026-09-24T15:15:00.000Z",
"testReason": "preEmployment",
"updatedAt": "2026-09-24T15:20:00.000Z",
"url": "/api/v2/orders/a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"matched": {
"originalSource": "app",
"score": 100
}
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}Cancel an order
Cancels an order placed at a location under a company linked to the API token and returns it. Every service except background checks is cancelled; the order itself is kept. Cancelling an order that is already cancelled changes nothing and returns it with 200. Returns 422 for an order in another final status or with only background-check services, and 404 for any order the token cannot see. The participant’s identifiers are never included; get the order for them. Requires the order.cancel scope.
curl --request PUT \
--url https://api.stage.origin.one/api/v2/orders/{id}/cancellation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.stage.origin.one/api/v2/orders/{id}/cancellation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.stage.origin.one/api/v2/orders/{id}/cancellation"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"id": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"object": "order",
"code": "CPmJ6QbYMo",
"agency": {
"code": "FAA",
"id": "3",
"object": "agency",
"url": "/api/v2/agencies/3"
},
"clinic": {
"address": {
"city": "Seattle",
"country": "US",
"line1": "123 Main St",
"line2": "Suite 400",
"object": "address",
"postalCode": "98101",
"state": "WA"
},
"id": "42",
"name": "Austin Downtown Clinic",
"object": "clinic",
"phone": "+1-512-555-0100",
"url": "/api/v2/clinics/42"
},
"company": {
"id": "123",
"name": "Acme Inc",
"object": "company",
"url": "/api/v2/companies/123"
},
"createdAt": "2026-09-24T09:00:00.000Z",
"expiresAt": "2026-09-24T15:15:00.000Z",
"isFinal": false,
"jobCategory": {
"id": "3987402f-e963-45a9-8799-b9ea6621adae",
"name": "Flight Crewmember",
"object": "jobCategory",
"url": "/api/v2/agencies/3/jobCategories/3987402f-e963-45a9-8799-b9ea6621adae"
},
"location": {
"id": "456",
"name": "Acme Downtown",
"object": "location",
"url": "/api/v2/locations/456"
},
"otherTestReason": "courtOrdered",
"packages": [
{
"id": "789",
"name": "DOT Pre-Employment Drug Test",
"object": "package",
"url": "/api/v2/packages/789"
}
],
"participant": {
"address": {
"city": "Seattle",
"country": "US",
"line1": "123 Main St",
"line2": "Suite 400",
"object": "address",
"postalCode": "98101",
"state": "WA"
},
"birthDate": "1980-11-11",
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"middleName": "Q",
"phone": "+13033232323",
"identifiers": [
{
"issuingCountry": "US",
"issuingState": "WA",
"object": "participantIdentifier",
"type": "driverLicense",
"value": "D1234567"
}
]
},
"services": [
{
"attributes": {
"category": "standardPanels",
"type": "urine"
},
"courierServiceName": "FedEx",
"id": "<string>",
"isDot": false,
"isFinal": false,
"lab": {
"id": "64cba816-3c52-4a63-9d0e-0f2b5d1a7e11",
"name": "CRL",
"object": "vendor",
"type": "lab"
},
"name": "5 Panel Urine",
"object": "orderService",
"screenHistory": [
{
"object": "orderServiceScreenHistory",
"occurredAt": "2026-09-24T15:15:00.000Z",
"type": "specimenCollected"
}
],
"specimenId": "SP-1",
"status": "pending_collectionCompleted",
"statusHistory": [
{
"groupType": "specimenCollected",
"object": "orderServiceStatusHistory",
"occurredAt": "2026-09-24T15:15:00.000Z",
"status": "pending_collectionCompleted"
}
],
"statusUpdatedAt": "2026-09-24T15:15:00.000Z",
"trackingNumber": "1Z999AA10123456784"
}
],
"status": "pending",
"statusUpdatedAt": "2026-09-24T15:15:00.000Z",
"testReason": "preEmployment",
"updatedAt": "2026-09-24T15:20:00.000Z",
"url": "/api/v2/orders/a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"matched": {
"originalSource": "app",
"score": 100
}
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}{
"error": "Bad Request",
"errors": [
{
"code": "tooSmall",
"detail": "Too small: expected number to be >=1",
"meta": {},
"source": {
"pointer": "/page"
}
}
],
"statusCode": 400
}Authorizations
Origin One API token. Pass it in the Authorization header: Authorization: Bearer <token>.
Path Parameters
Unique identifier of the resource.
"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"
Body
Who is cancelling, for the audit trail.
Show child attributes
Show child attributes
Response
Success.
Unique identifier of the order.
"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"
Object type; always order.
order "order"
Human-readable order code.
"CPmJ6QbYMo"
Regulatory agency the order was placed under; null for a non-regulated order.
Show child attributes
Show child attributes
Collection site; null until one is assigned.
Show child attributes
Show child attributes
Company the order was placed for.
Show child attributes
Show child attributes
When the order was created.
"2026-09-24T09:00:00.000Z"
When the order expires; null when it does not.
"2026-09-24T15:15:00.000Z"
Whether the order has reached an outcome. Cancelled, expired and no-show orders report false; check status for those.
false
DOT job category of the participant; null when the order has none.
Show child attributes
Show child attributes
Location the order was placed at.
Show child attributes
Show child attributes
Detail for a testReason of other; null when none was given.
"courtOrdered"
Packages the order was created from.
Show child attributes
Show child attributes
The person being tested.
Show child attributes
Show child attributes
Services on the order, in creation order.
Show child attributes
Show child attributes
Current order status; new values may appear.
adulterated, cancelled, complete, expired, fail, fitForDuty, incomplete, integrationError, negative, lostInTransit, nonNegative, noShow, notFitForDuty, ordered, pass, pending, positive, released, scheduled, substituted, testCancelled, testNotPerformed, unobtainable "pending"
When the order status last changed; the creation time until the first change.
"2026-09-24T15:15:00.000Z"
Reason for the test.
blindSample, fitnessForDuty, followUp, jobTransfer, notIndicated, other, periodic, periodicMedical, postAccident, preEmployment, preSiteAccess, probation, promotion, random, reasonableSuspicion, returnToDuty, splitSpecimen, sweep, unauthorizedTest, unknown, injury "preEmployment"
When the order was last updated.
"2026-09-24T15:20:00.000Z"
Canonical path of this resource, relative to the API origin.
"/api/v2/orders/a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"
Present on a create response when an equivalent existing order was returned instead.
Show child attributes
Show child attributes