CorebanqCorebanq Developer Docs
Itemsv1

Get distinct item types with counts

Returns each distinct item type with how many items carry it. A bare array, not the list envelope. The count is over ACTIVE items only (WHERE active = true), so it does not match the totals from GET /v1/items unless that list is filtered the same way. This route performs no record-permission check and takes no query parameters.

GET
/v1/items/types/distinct

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/items/types/distinct"
[
  {
    "type": "product",
    "count": 12
  }
]
{
  "status": 409,
  "message": "Item with this name already exists",
  "code": "items_m.item_name_exists",
  "class": "business",
  "retryable": false,
  "details": [
    {
      "field": "title",
      "rule": "required",
      "param": "string",
      "message": "title is required"
    }
  ]
}
{
  "status": 409,
  "message": "Item with this name already exists",
  "code": "items_m.item_name_exists",
  "class": "business",
  "retryable": false,
  "details": [
    {
      "field": "title",
      "rule": "required",
      "param": "string",
      "message": "title is required"
    }
  ]
}
{
  "status": 429,
  "message": "rate limit exceeded",
  "code": "rate_limits_m.exceeded",
  "class": "temporary",
  "retryable": true
}
{
  "status": 409,
  "message": "Item with this name already exists",
  "code": "items_m.item_name_exists",
  "class": "business",
  "retryable": false,
  "details": [
    {
      "field": "title",
      "rule": "required",
      "param": "string",
      "message": "title is required"
    }
  ]
}

{
  "overall_status": "unhealthy",
  "message": "Service is shutting down",
  "timestamp": "2026-08-27T15:04:05Z"
}