curl --request GET \
--url https://www.closient.com/epcis/api/2.0/events \
--header 'X-API-Key: <api-key>'import requests
url = "https://www.closient.com/epcis/api/2.0/events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://www.closient.com/epcis/api/2.0/events', 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.closient.com/epcis/api/2.0/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://www.closient.com/epcis/api/2.0/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.closient.com/epcis/api/2.0/events")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.closient.com/epcis/api/2.0/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"epcisBody": {
"queryResults": {
"eventList": [
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"action": "ADD",
"bizStep": "commissioning",
"disposition": "active",
"epcList": [
"/01/00012345678906/21/SERIAL001"
],
"eventID": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"eventTime": "2026-08-25T03:40:00+00:00",
"eventTimeZoneOffset": "+00:00",
"recordTime": "2026-08-25T03:40:05+00:00",
"type": "ObjectEvent"
}
]
}
},
"type": "EPCISQueryDocument"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}Query EPCIS events
Query events using EPCIS 2.0 SimpleEventQuery parameters (GS1 EPCIS 2.0 §8.2.7 and §8.2.8). Filter by event type, time window, CBV business step or disposition, read point, business location, action, or by EPC reference. Results are returned as a JSON-LD EPCISQueryDocument (§8.2.5) with the standard @context, type, and epcisBody.queryResults.eventList envelope. Pagination follows the REST binding: while more results remain, the Link response header carries the absolute URL of the next page with rel="next", and GS1-Next-Page-Token-Expires says how long its nextPageToken is guaranteed valid; the last page has no Link. The GS1-Next-Page-Token header is still sent but deprecated. Caller must hold OWNER or MANAGER on an organization; results are scoped to events captured by that organization.
curl --request GET \
--url https://www.closient.com/epcis/api/2.0/events \
--header 'X-API-Key: <api-key>'import requests
url = "https://www.closient.com/epcis/api/2.0/events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://www.closient.com/epcis/api/2.0/events', 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.closient.com/epcis/api/2.0/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://www.closient.com/epcis/api/2.0/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.closient.com/epcis/api/2.0/events")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.closient.com/epcis/api/2.0/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"epcisBody": {
"queryResults": {
"eventList": [
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"action": "ADD",
"bizStep": "commissioning",
"disposition": "active",
"epcList": [
"/01/00012345678906/21/SERIAL001"
],
"eventID": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"eventTime": "2026-08-25T03:40:00+00:00",
"eventTimeZoneOffset": "+00:00",
"recordTime": "2026-08-25T03:40:05+00:00",
"type": "ObjectEvent"
}
]
}
},
"type": "EPCISQueryDocument"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}{
"detail": "The requested resource was not found.",
"error_code": "not_found",
"retryable": false,
"status": 404,
"timestamp": "2026-03-31T12:00:00+00:00",
"title": "Not Found",
"type": "https://closient.com/docs/errors/not_found"
}Authorizations
Query Parameters
Filter by EPCIS event type. One of ObjectEvent, AggregationEvent, TransactionEvent, TransformationEvent, or AssociationEvent per GS1 EPCIS 2.0 §7.3.
ObjectEvent, AggregationEvent, TransactionEvent, TransformationEvent, AssociationEvent Events with eventTime >= this value (inclusive lower bound). ISO-8601 / RFC 3339 with timezone offset per GS1 EPCIS 2.0 §8.2.7.2.
Events with eventTime < this value (exclusive upper bound). ISO-8601 / RFC 3339 with timezone offset per GS1 EPCIS 2.0 §8.2.7.2.
Filter by exact CBV business step. Accepts either the bare CBV token (shipping) or the URN-prefixed form (urn:epcglobal:cbv:bizstep:shipping); matching is exact-string against what was captured. The CBV 2.0 vocabulary is extensible — vendor-specific URNs are valid input.
^[^\x00]{0,}$Filter by exact CBV disposition (state of objects after the event). Accepts either the bare CBV token (in_transit) or the URN-prefixed form (urn:epcglobal:cbv:disp:in_transit); matching is exact-string against what was captured. The CBV 2.0 vocabulary is extensible — vendor-specific URNs are valid input.
^[^\x00]{0,}$Filter by exact read point URI (where the event was observed) per GS1 EPCIS 2.0 §7.4.2 / CBV 2.0 §10. Accepts the GS1 Digital Link form (https://id.gs1.org/414/{gln}) or the legacy SGLN URN (urn:epc:id:sgln:{company}.{location}.{extension}); matching is exact-string against what was captured.
^[^\x00]{0,}$Filter by exact business location URI (where the objects logically are after the event) per GS1 EPCIS 2.0 §7.4.2. Accepts the GS1 Digital Link form or the legacy SGLN URN — same encoding as EQ_readPoint. Matching is exact-string against what was captured.
^[^\x00]{0,}$Filter events referencing this single EPC (per GS1 EPCIS 2.0 §8.2.7.2 MATCH_epc). Searches epcList, childEPCs, inputEPCList, and outputEPCList simultaneously. Accepts either GS1 Digital Link (https://id.gs1.org/01/{gtin14}/10/{lot}[/21/{serial}]) or the legacy SGTIN URN form.
^[^\x00]{0,}$Comma-separated list of EPCs; matches events referencing any one of them (per GS1 EPCIS 2.0 §8.2.7.2 MATCH_anyEPC). Each token is trimmed before matching. Use MATCH_epc for a single EPC.
^[^\x00]{0,}$Filter by action. Per GS1 EPCIS 2.0 §7.4.2 the only valid values are ADD, OBSERVE, or DELETE (uppercase). Blank action is reserved for TransformationEvent and cannot be filtered on.
ADD, OBSERVE, DELETE Maximum number of events to return per page (1-100, default 30). When more results are available the response carries a Link header with rel="next" — request that URL to fetch the next page.
1 <= x <= 100Cursor for the next page. The Link header's next-page URL already carries it; opaque to the client — do not construct or modify.
^[^\x00]{0,}$Response
OK
200 response body for GET /events (C-6396): a JSON-LD EPCISQueryDocument.
JSON-LD context; the EPCIS 2.0 context.
Always EPCISQueryDocument.
Envelope holding queryResults.eventList.
Show child attributes
Show child attributes
{ "queryResults": { "eventList": [ { "@context": [ "https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld" ], "action": "ADD", "bizStep": "commissioning", "disposition": "active", "epcList": ["/01/00012345678906/21/SERIAL001"], "eventID": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "eventTime": "2026-08-25T03:40:00+00:00", "eventTimeZoneOffset": "+00:00", "recordTime": "2026-08-25T03:40:05+00:00", "type": "ObjectEvent" } ] } }