Clients — List & Detail
Query client records with search and filtering, and retrieve full client profiles with associated accounts.
List Clients
GET
/apidev/v1/clientsPermissionAPICLI_CLIENTS_READ
Rate Limit10 req/min
Cache60s
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status | string | No | — | Filter by status. Max length 10. |
search | string | No | — | Free text search. Max length 120. |
limit | integer | No | 25 | Number of records per page (1–100). |
offset | integer | No | 0 | Number of records to skip for pagination. |
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Client identifier. |
name | string | null | Client name. |
business_name | string | null | Legal business name. |
email | string | null | Email address. |
phone | string | null | Phone number. |
image_url | string | null | Image URL. |
status | string | null | Client status. |
document | string | null | Document number. |
tax_id | string | null | Tax identification number. |
external_code | string | null | External system code. |
associated_accounts | number | null | Count of linked accounts. |
Code Examples
- cURL
- JavaScript
- Python
curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/clients?status=A&search=regional&limit=10"
const res = await fetch(
`https://${TENANT}/apidev/v1/clients?status=A&search=regional&limit=10`,
{
headers: {
'Authorization': `Bearer ${token}`,
'X-API-Key': apiKey,
'tenant': TENANT,
},
}
);
const { data, meta } = await res.json();
import requests
response = requests.get(
f"https://{TENANT}/apidev/v1/clients",
headers={"Authorization": f"Bearer {token}", "X-API-Key": api_key, "tenant": TENANT},
params={"status": "A", "search": "regional", "limit": 10},
)
data = response.json()
Example Response
{
"success": true,
"data": [
{
"id": "982710394857200005",
"name": "Regional Distributors",
"business_name": "Regional Distributors S.A.",
"email": "info@regionaldist.com",
"phone": "+59821009876",
"image_url": null,
"status": "A",
"document": null,
"tax_id": "219900005018",
"external_code": null,
"associated_accounts": 12
}
],
"meta": {
"total": 23,
"limit": 10,
"offset": 0
}
}
Client Detail
GET
/apidev/v1/clients/{id}PermissionAPICLI_CLIENTS_READ
Rate Limit10 req/min
Cache30s
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Client unique identifier. |
Additional Response Fields
Returns all fields from the List endpoint, plus:
| Field | Type | Description |
|---|---|---|
mobile | string | null | Mobile phone. |
notes | string | null | Free-text notes. |
document_type | number | null | Document type identifier. |
address | object | Nested: street, door_number, apartment, corner, zip_code, latitude, longitude. |
country_id | string | null | Country ID. |
department_id | string | null | Department ID. |
accounts | array | Associated account objects with id, name, external_code, status. |
Code Examples
- cURL
- JavaScript
- Python
curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/clients/982710394857200005"
const res = await fetch(
`https://${TENANT}/apidev/v1/clients/982710394857200005`,
{
headers: {
'Authorization': `Bearer ${token}`,
'X-API-Key': apiKey,
'tenant': TENANT,
},
}
);
const { data } = await res.json();
import requests
response = requests.get(
f"https://{TENANT}/apidev/v1/clients/982710394857200005",
headers={"Authorization": f"Bearer {token}", "X-API-Key": api_key, "tenant": TENANT},
)
data = response.json()
Example Response
{
"success": true,
"data": {
"id": "982710394857200005",
"name": "Regional Distributors",
"business_name": "Regional Distributors S.A.",
"email": "info@regionaldist.com",
"phone": "+59821009876",
"mobile": "+59899876543",
"image_url": null,
"status": "A",
"document": null,
"tax_id": "219900005018",
"external_code": null,
"notes": null,
"document_type": null,
"address": {
"street": "Bvar. Artigas",
"door_number": "567",
"apartment": null,
"corner": "21 de Setiembre",
"zip_code": null,
"latitude": "-34.9103",
"longitude": "-56.1708"
},
"country_id": "1",
"department_id": "10",
"associated_accounts": 3,
"accounts": [
{
"id": "982710394857201664",
"name": "Acme Corp",
"external_code": "EXT-001",
"status": "A"
},
{
"id": "982710394857201665",
"name": "Beta Industries",
"external_code": null,
"status": "A"
},
{
"id": "982710394857201666",
"name": "Gamma Solutions",
"external_code": "EXT-003",
"status": "I"
}
]
},
"meta": {}
}
Errors
| Code | HTTP | Description |
|---|---|---|
BAD_REQUEST | 400 | Missing required headers. |
VALIDATION_ERROR | 400 | Invalid parameters. |
UNAUTHORIZED | 401 | Invalid or expired JWT / API Key. |
FORBIDDEN | 403 | User lacks required permission. |
NOT_FOUND | 404 | Resource not found (detail endpoint). |
RATE_LIMITED | 429 | Exceeded 10 req/min. |
INTERNAL_ERROR | 500 | Unexpected server error. |