List clients
Return every client of your lab, most recently added first.
Use start and limit to page through the results — a maximum of 100
clients
are returned at a time. When more clients are available beyond the current
page, more_results is true.
Query parameters
Zero-based index of the first client to return.
Default: 0
Maximum number of clients to return. Capped at 100.
Default: 100
Only return clients modified after this time, e.g. 2025-03-14T09:12:44.
Only return archived clients when true, or only active clients when false. Omit to return both.
Try it
Log in to send test requests to this endpoint straight from the docs.
Responses
200 Success
Show 6 child attributes Hide 6 child attributes
Client ID
Organization Name
Whether this is a training client
Time this client was last modified
Show 3 child attributes Hide 3 child attributes
License ID
License Number
License Code (some states only)
True if this client has been archived
True when more clients are available beyond this page.
400 Bad request
The request was malformed or failed validation. Validation failures include per-field messages in error_details.
Possible error_code values: invalid_request, request_too_old.
401 Unauthorized
Authentication failed.
Possible error_code values: missing_api_key, invalid_api_key, invalid_credentials_type, api_access_restricted, api_access_denied, missing_signature, missing_timestamp, invalid_timestamp, invalid_signature.
403 Permission denied
The API key is valid but does not have permission for this endpoint (for example, a client key calling a labs endpoint).
Possible error_code values: permission_denied.
# X-ConfidentLims-Signature: see the Request Signing guide - https://api.confidentcannabis.com/v0/docs/request-signing.md curl -X GET 'https://api.confidentcannabis.com/v0/labs/clients' \ -H 'X-ConfidentLims-APIKey: YOUR_API_KEY' \ -H 'X-ConfidentLims-Timestamp: UNIX_TIMESTAMP' \ -H 'X-ConfidentLims-Signature: REQUEST_SIGNATURE'
import time import requests # sign_request() is defined in the Request Signing guide: # https://api.confidentcannabis.com/v0/docs/request-signing.md from sign_request import sign_request API_KEY = 'YOUR_API_KEY' API_SECRET = 'YOUR_API_SECRET' path = '/v0/labs/clients' params = { # optional query params go here - they are signed too } headers = {'X-ConfidentLims-Timestamp': str(int(time.time()))} headers['X-ConfidentLims-Signature'] = sign_request( 'GET', path, headers, params, API_KEY, API_SECRET) headers['X-ConfidentLims-APIKey'] = API_KEY response = requests.get( 'https://api.confidentcannabis.com' + path, headers=headers, params=params, ) print(response.json())
// signRequest() is defined in the Request Signing guide: // https://api.confidentcannabis.com/v0/docs/request-signing.md import { signRequest } from './sign_request.js'; const API_KEY = 'YOUR_API_KEY'; const API_SECRET = 'YOUR_API_SECRET'; const path = "/v0/labs/clients"; const params = { // optional query params go here - they are signed too }; const headers = { 'X-ConfidentLims-Timestamp': String(Math.floor(Date.now() / 1000)) }; headers['X-ConfidentLims-Signature'] = signRequest( "GET", path, headers, params, API_KEY, API_SECRET); headers['X-ConfidentLims-APIKey'] = API_KEY; const response = await fetch(`https://api.confidentcannabis.com${path}?${new URLSearchParams(params)}`, { headers, }); console.log(await response.json());
{
"success": true,
"clients": [
{
"id": 318,
"name": "Sunrise Cultivation",
"training": false,
"last_modified": "2025-02-27T18:04:03",
"licenses": [
{
"id": 4410,
"license_number": "CDPH-10003456",
"license_code": null
}
],
"archived": false
},
{
"id": 244,
"name": "Harbor Extracts",
"training": false,
"last_modified": "2025-01-19T10:47:56",
"licenses": [
{
"id": 3902,
"license_number": "CDPH-10002211",
"license_code": null
}
],
"archived": true
}
],
"more_results": false
}