QR code scan history
Overview
Get paginated scan history (newest first by scanned_at) for a QR code belonging to the authenticated account-user, along with a small summary of the QR code itself.
Prerequisites
- A bearer token. Callable with Account tokens.
- The
qrCodeIdof the record you are targeting.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/qr-codes/{qrCodeId}/scan-history
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Account tokens.
-
The QR code must belong to the caller's own company (404 if outside it).
-
The request injects the route
idinto validation data and asserts it is an existing QR code.
Rate limit
- No rate limit.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
qrCodeId | integer | Required | Digits only. |
Query parameters
- Query:
per_page(integer, optional, 10–100, default 15; values below 10 are raised to 10).
Response
data.status(string) —"success".data.data(object) — a paginator of scan-history rows. Each row:id,qr_code_id,qr_code_template_id(nullable),ip_address,user_agent,referer,device_type,browser,os,latitude,longitude,country,city,metadata,scanned_at. Includes paginator keyscurrent_page,per_page,total,last_page.data.message(string) —"QR code scan history retrieved successfully".data.qr_code(object).
200 Success · 200
200{
"data": {
"status": "success",
"data": {
"current_page": 1,
"data": [
{
"id": 123,
"qr_code_id": 200,
"qr_code_template_id": null,
"ip_address": "203.0.113.5",
"device_type": "mobile",
"browser": "Chrome",
"os": "iOS",
"country": "US",
"city": "New York",
"scanned_at": "2026-06-15T10:30:00.000000Z"
}
],
"per_page": 15,
"total": 42,
"last_page": 3
},
"message": "QR code scan history retrieved successfully",
"qr_code": {
"id": 200,
"name": "Lobby QR Code",
"destination_type": "landing_page"
}
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
404 | Returned if outside the account company |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/qr-codes/123/scan-history" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 10 days ago
Did this page help you?
