# Count lookups over time

Source: https://checkslip.com/en/docs/count-slip-checks

GET `https://api.checkslip.com/api/slips/counts`

API key

Lookups of this account per time bucket, split by outcome, for a chart. Counted by the time of the lookup (checked_at), the same axis as the lookup history table; Credit usage counts by the time the credit was settled, so the two do not always match. bucket is MINUTE, FIVE_MINUTE, FIFTEEN_MINUTE, HOUR, THREE_HOUR, SIX_HOUR, TWELVE_HOUR or DAY. At most 1,440 points per call; a window too wide for the bucket answers 400. Only time and outcome filter the counts; any other filter you send is listed in filters_ignored. Counts trail the table by about 2 minutes, see as_of. No credit is used. Needs an API key with slip:read.

## Parameters

| Field | In | Type | Required |
| --- | --- | --- | --- |
| `from` | query | `string (date-time)` | yes |
| `to` | query | `string (date-time)` | yes |
| `bucket` | query | `MINUTE \| FIVE_MINUTE \| FIFTEEN_MINUTE \| HOUR \| THREE_HOUR \| SIX_HOUR \| TWELVE_HOUR \| DAY` | yes |
| `outcome` | query | `FOUND \| NOT_FOUND \| DUPLICATE \| PENDING \| UNAVAILABLE \| INVALID_QR \| INVALID_FILE \| QR_TAMPERED \| TOO_OLD[]` | no |
| `outcome_not` | query | `FOUND \| NOT_FOUND \| DUPLICATE \| PENDING \| UNAVAILABLE \| INVALID_QR \| INVALID_FILE \| QR_TAMPERED \| TOO_OLD[]` | no |
| `q` | query | `string` | no |
| `trans_ref` | query | `string` | no |
| `sender_bank` | query | `string` | no |
| `api_key` | query | `string` | no |
| `after` | query | `string` | no |
| `charged` | query | `string[]` | no |
| `free_reason` | query | `string[]` | no |

## Responses

### 200 `application/json`

| Field | Type | Required |
| --- | --- | --- |
| `bucket` | `MINUTE \| FIVE_MINUTE \| FIFTEEN_MINUTE \| HOUR \| THREE_HOUR \| SIX_HOUR \| TWELVE_HOUR \| DAY` | yes |
| `as_of` | `string (date-time)` | yes |
| `filters_applied` | `from \| to \| outcome \| outcome_not[]` | yes |
| `filters_ignored` | `q \| trans_ref \| sender_bank \| api_key \| after \| charged \| free_reason[]` | yes |
| `series` | `object[]` | yes |
| `series[].start` | `string (date-time)` | yes |
| `series[].counts` | `object` | yes |

### Possible errors

400 401 403 429

An error as Problem Details. All codes are listed at [Error codes](https://checkslip.com/en/docs/errors)

**cURL**

```bash
curl "https://api.checkslip.com/api/slips/counts?from=2026-11-05T09%3A30%3A00%2B07%3A00&to=2026-11-05T09%3A30%3A00%2B07%3A00&bucket=MINUTE" \
  -H "Authorization: Bearer $CHECKSLIP_API_KEY"
```

**Node.js**

```javascript
const res = await fetch("https://api.checkslip.com/api/slips/counts?from=2026-11-05T09%3A30%3A00%2B07%3A00&to=2026-11-05T09%3A30%3A00%2B07%3A00&bucket=MINUTE", {
  headers: {
    Authorization: `Bearer ${process.env.CHECKSLIP_API_KEY}`,
  },
});
const data = await res.json();
```

**Python**

```python
import os

import requests

res = requests.get(
    "https://api.checkslip.com/api/slips/counts",
    headers={
        "Authorization": f"Bearer {os.environ['CHECKSLIP_API_KEY']}",
    },
    params={
        "from": "2026-11-05T09:30:00+07:00",
        "to": "2026-11-05T09:30:00+07:00",
        "bucket": "MINUTE",
    },
)
data = res.json()
```

```json
{
  "bucket": "MINUTE",
  "as_of": "2026-11-05T09:30:00+07:00",
  "filters_applied": [
    "from"
  ],
  "filters_ignored": [
    "q"
  ],
  "series": [
    {
      "start": "2026-11-05T09:30:00+07:00",
      "counts": {}
    }
  ]
}
```
