curl --request GET \
--url https://app.useqx.com/api/v1/collections/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.useqx.com/api/v1/collections/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.useqx.com/api/v1/collections/{id}', 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://app.useqx.com/api/v1/collections/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.useqx.com/api/v1/collections/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.useqx.com/api/v1/collections/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.useqx.com/api/v1/collections/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "col_40",
"protocol": "DOC-2026-00123",
"state": "assembling",
"discarded": false,
"contact": {
"id": "com_12",
"type": "company",
"name": "Importadora Exemplo Ltda"
},
"recipient": null,
"packs": [
{
"id": "pck_12",
"name": "Importação marítima"
}
],
"numbers": [
"INV-81244/2026"
],
"created_at": "2026-09-25T10:31:12.000-03:00",
"ready_at": null,
"documents": [
{
"id": "doc_311",
"document_type": {
"id": "dtp_32",
"name": "Bill of Lading (B/L)"
},
"status": "pending",
"has_content": false
},
{
"id": "doc_312",
"document_type": {
"id": "dtp_33",
"name": "Romaneio de Carga (Packing List)"
},
"status": "pending",
"has_content": false
},
{
"id": "doc_318",
"document_type": {
"id": "dtp_31",
"name": "Fatura Comercial (Commercial Invoice)"
},
"status": "uploaded",
"has_content": true
}
]
}{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "The API could not read the call. Check the shape and the encoding of the path and the query, the JSON of the body and the headers.",
"code": "malformed_request"
}{
"type": "about:blank",
"title": "Unauthorized",
"status": 401,
"detail": "The call did not include a valid API key. Send the key in the Authorization header, in the format Bearer <key>.",
"code": "unauthorized"
}{
"type": "about:blank",
"title": "Payment Required",
"status": 402,
"detail": "The subscription of the organization is blocked. Settle the payment in QX to use the API.",
"code": "subscription_blocked"
}{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "The free plan does not include the API. Subscribe to a paid plan in QX to use the API.",
"code": "plan_required"
}{
"type": "about:blank",
"title": "Not Found",
"status": 404,
"detail": "The resource does not exist in the key's organization.",
"code": "not_found"
}{
"type": "about:blank",
"title": "Too Many Requests",
"status": 429,
"detail": "The key went over a per-minute limit. Wait for the seconds in the Retry-After header and call again.",
"code": "rate_limited"
}Read a collection
Reads a collection of the key’s organization, with the documents of the collection. The call also finds an archived collection.
curl --request GET \
--url https://app.useqx.com/api/v1/collections/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.useqx.com/api/v1/collections/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.useqx.com/api/v1/collections/{id}', 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://app.useqx.com/api/v1/collections/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.useqx.com/api/v1/collections/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.useqx.com/api/v1/collections/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.useqx.com/api/v1/collections/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "col_40",
"protocol": "DOC-2026-00123",
"state": "assembling",
"discarded": false,
"contact": {
"id": "com_12",
"type": "company",
"name": "Importadora Exemplo Ltda"
},
"recipient": null,
"packs": [
{
"id": "pck_12",
"name": "Importação marítima"
}
],
"numbers": [
"INV-81244/2026"
],
"created_at": "2026-09-25T10:31:12.000-03:00",
"ready_at": null,
"documents": [
{
"id": "doc_311",
"document_type": {
"id": "dtp_32",
"name": "Bill of Lading (B/L)"
},
"status": "pending",
"has_content": false
},
{
"id": "doc_312",
"document_type": {
"id": "dtp_33",
"name": "Romaneio de Carga (Packing List)"
},
"status": "pending",
"has_content": false
},
{
"id": "doc_318",
"document_type": {
"id": "dtp_31",
"name": "Fatura Comercial (Commercial Invoice)"
},
"status": "uploaded",
"has_content": true
}
]
}{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "The API could not read the call. Check the shape and the encoding of the path and the query, the JSON of the body and the headers.",
"code": "malformed_request"
}{
"type": "about:blank",
"title": "Unauthorized",
"status": 401,
"detail": "The call did not include a valid API key. Send the key in the Authorization header, in the format Bearer <key>.",
"code": "unauthorized"
}{
"type": "about:blank",
"title": "Payment Required",
"status": 402,
"detail": "The subscription of the organization is blocked. Settle the payment in QX to use the API.",
"code": "subscription_blocked"
}{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "The free plan does not include the API. Subscribe to a paid plan in QX to use the API.",
"code": "plan_required"
}{
"type": "about:blank",
"title": "Not Found",
"status": 404,
"detail": "The resource does not exist in the key's organization.",
"code": "not_found"
}{
"type": "about:blank",
"title": "Too Many Requests",
"status": 429,
"detail": "The key went over a per-minute limit. Wait for the seconds in the Retry-After header and call again.",
"code": "rate_limited"
}Authorizations
The API key of the organization, in the Authorization: Bearer <key> header. The key starts with qx_.
Path Parameters
The id of the collection. The id starts with col_.
Response
The collection, with the documents.
A collection, with the list of documents.
The id of the collection.
^col_[1-9][0-9]*$"col_40"
The protocol of the collection.
"DOC-2026-00123"
The state of the collection. assembling: the collection is in assembly and waits for the documents. reviewing: the operator reviews the documents. ready_to_dispatch: every required document arrived, and no validation blocks the collection. awaiting_partner: the operator sent the collection to the partner. cancelled: the operator canceled the collection.
assembling, reviewing, ready_to_dispatch, awaiting_partner, cancelled With true, the collection is archived.
The contact of the collection. The value is null on a collection without a contact, until the recipient identifies themselves.
Show child attributes
Show child attributes
The recipient of a collection created without a contact. On a collection created with a contact, the value is null.
Show child attributes
Show child attributes
The packs that the collection asks for.
Show child attributes
Show child attributes
The operation numbers, as the collection screen shows them. The list includes the numbers printed on the documents of the identifier requirements of the pack. Without these numbers, the list includes the numbers printed on the other documents of the collection. On a collection without an operation pack, the list is empty.
["INV-81244/2026"]
The date and the time of the creation, in the time zone of the organization.
"2026-09-25T10:30:00.000-03:00"
The date and the time when the collection last became ready, in the time zone of the organization. The value is null when the collection never became ready.
The documents of the collection, from the oldest to the newest. The list does not include a discarded document.
Show child attributes
Show child attributes