API Reference

Fill rates

Aggregate measured fill rates and compare them with configured expectations.

GET
/v1/stores/{externalId}/fill-rates

Aggregates fill-rate results for one store and compares them with expectations. Choose groupBy=protocol, exposition, or category.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

externalId*string

Store identifier from your system. This is the public store key used in API paths.

Query Parameters

from*string

Inclusive start of the requested date-time range.

to*string

Exclusive end of the requested date-time range.

status?string

Protocol status filter. Defaults to completed for analytics endpoints.

groupBy?string

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/stores/store-123/fill-rates?from=2026-06-15T00%3A00%3A00Z&to=2026-06-16T00%3A00%3A00Z&status=completed"
{  "externalId": "string",  "groupBy": "protocol",  "protocolStatus": "awaiting_submission",  "from": "2019-08-24T14:15:22Z",  "to": "2019-08-24T14:15:22Z",  "summary": {    "protocolCount": 0,    "imageCount": 0,    "averageFillRate": 0,    "expectedAverageFillRate": 0,    "delta": 0,    "belowExpectationCount": 0  },  "items": [    {      "key": "string",      "protocolId": "string",      "externalId": "string",      "storeName": "string",      "regionName": "string",      "expositionId": "9ea3c12e-334c-4cc0-8ef1-de71b907bcd0",      "expositionType": "FRIDGE_DRINKS",      "productCategory": "string",      "scheduledDate": "2019-08-24",      "scheduledAt": "12:00:00",      "scheduledDatetime": "2019-08-24T14:15:22Z",      "week": "2026-W25",      "status": "awaiting_submission",      "protocolCount": 0,      "imageCount": 0,      "averageFillRate": 0,      "expectation": {        "expectedAverageFillRate": 0,        "delta": 0,        "belowExpectation": true,        "comparedImageCount": 0,        "missingExpectationCount": 0,        "ambiguousExpectationCount": 0      }    }  ]}
{  "error": {    "code": "not_configured",    "message": "string",    "issues": [      {        "path": "string",        "message": "string",        "code": "string"      }    ]  }}
{  "error": {    "code": "not_configured",    "message": "string",    "issues": [      {        "path": "string",        "message": "string",        "code": "string"      }    ]  }}
GET
/v1/stores/{externalId}/expositions/{expositionId}/fill-rate

Returns photo-level fill-rate results for one exposition in one store, including expectation comparison per photo.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

externalId*string

Store identifier from your system. This is the public store key used in API paths.

expositionId*string

Query Parameters

from*string

Inclusive start of the requested date-time range.

to*string

Exclusive end of the requested date-time range.

status?string

Protocol status filter. Defaults to completed for analytics endpoints.

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/stores/store-123/expositions/497f6eca-6276-4993-bfeb-53cbbbba6f08/fill-rate?from=2026-06-15T00%3A00%3A00Z&to=2026-06-16T00%3A00%3A00Z&status=completed"
{  "externalId": "string",  "expositionId": "9ea3c12e-334c-4cc0-8ef1-de71b907bcd0",  "protocolStatus": "awaiting_submission",  "from": "2019-08-24T14:15:22Z",  "to": "2019-08-24T14:15:22Z",  "summary": {    "protocolCount": 0,    "imageCount": 0,    "averageFillRate": 0,    "expectedAverageFillRate": 0,    "delta": 0,    "belowExpectationCount": 0  },  "items": [    {      "photoId": "471eeb8e-973b-4db2-8b53-a320ccd51909",      "protocolId": "145fbbc7-5125-4cc4-be15-11cd04d84fa0",      "expositionId": "9ea3c12e-334c-4cc0-8ef1-de71b907bcd0",      "imageUrl": "http://example.com",      "scheduledDate": "2019-08-24",      "scheduledAt": "12:00:00",      "scheduledDatetime": "2019-08-24T14:15:22Z",      "protocolStatus": "awaiting_submission",      "imageStatus": "pending",      "fillRate": 0,      "expectation": {        "expectedAverageFillRate": 0,        "delta": 0,        "belowExpectation": true,        "comparedImageCount": 0,        "missingExpectationCount": 0,        "ambiguousExpectationCount": 0      }    }  ]}
{  "error": {    "code": "not_configured",    "message": "string",    "issues": [      {        "path": "string",        "message": "string",        "code": "string"      }    ]  }}
{  "error": {    "code": "not_configured",    "message": "string",    "issues": [      {        "path": "string",        "message": "string",        "code": "string"      }    ]  }}
GET
/v1/fill-rate

Aggregates fill-rate results across stores. Use externalIds to limit the stores and groupBy to choose the reporting dimension.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Query Parameters

from*string

Inclusive start of the requested date-time range.

to*string

Exclusive end of the requested date-time range.

status?string

Protocol status filter. Defaults to completed for analytics endpoints.

groupBy?string
externalIds?string

Comma-separated external store IDs.

minFillRate?number
maxFillRate?number
belowExpectationOnly?boolean

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/fill-rate?from=2026-06-15T00%3A00%3A00Z&to=2026-06-16T00%3A00%3A00Z&status=completed"
{  "groupBy": "store",  "protocolStatus": "awaiting_submission",  "from": "2019-08-24T14:15:22Z",  "to": "2019-08-24T14:15:22Z",  "filters": {    "externalIds": [      "string"    ],    "minFillRate": 0,    "maxFillRate": 0,    "belowExpectationOnly": true  },  "summary": {    "protocolCount": 0,    "imageCount": 0,    "averageFillRate": 0,    "expectedAverageFillRate": 0,    "delta": 0,    "belowExpectationCount": 0  },  "items": [    {      "key": "string",      "protocolId": "string",      "externalId": "string",      "storeName": "string",      "regionName": "string",      "expositionId": "9ea3c12e-334c-4cc0-8ef1-de71b907bcd0",      "expositionType": "FRIDGE_DRINKS",      "productCategory": "string",      "scheduledDate": "2019-08-24",      "scheduledAt": "12:00:00",      "scheduledDatetime": "2019-08-24T14:15:22Z",      "week": "2026-W25",      "status": "awaiting_submission",      "protocolCount": 0,      "imageCount": 0,      "averageFillRate": 0,      "expectation": {        "expectedAverageFillRate": 0,        "delta": 0,        "belowExpectation": true,        "comparedImageCount": 0,        "missingExpectationCount": 0,        "ambiguousExpectationCount": 0      }    }  ]}
{  "error": {    "code": "not_configured",    "message": "string",    "issues": [      {        "path": "string",        "message": "string",        "code": "string"      }    ]  }}