> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search FailedCheckins

> Search and list FailedCheckin records with filtering, sorting, and pagination.

A **FailedCheckin** records an unsuccessful check-in attempt by a coworker (see `Checkin` entity). Each record captures the coworker involved, the location where the attempt occurred, the reason for the failure, and contextual details such as the coworker's teams and tariff at the time.

Failed check-ins are read-only and generated automatically by the system when a check-in is rejected — for example, due to access restrictions, an inactive plan, or an unrecognised device. Use the `Description` field to inspect the specific failure reason.

The `Source` field indicates how the check-in was initiated (e.g. manual, Wi-Fi, app) and matches the `eCheckinSource` enum used by the `Checkin` entity.

## Authentication

<Note>
  This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
  The authenticated user must be a full unrestricted administrator or have the **`FailedCheckin-List`** role.
</Note>

## Enums

<Accordion title="eCheckinSource — Source values">
  | Value | Name            |
  | ----- | --------------- |
  | 0     | None            |
  | 1     | Manual          |
  | 2     | DoorAccess      |
  | 3     | NetworkActivity |
  | 4     | Tile            |
  | 5     | Sensor          |
</Accordion>

## Query Parameters

### Pagination & Sorting

<ParamField query="page" type="integer" default="1">
  The page number to retrieve.
</ParamField>

<ParamField query="size" type="integer" default="25">
  The number of records per page.
</ParamField>

<ParamField query="orderBy" type="string">
  The property name to sort results by (e.g. `Name`, `CreatedOn`).
</ParamField>

<ParamField query="dir" type="integer">
  Sort direction. `0` for ascending, `1` for descending.
</ParamField>

### Filters

<ParamField query="FailedCheckin_Coworker" type="integer">
  Filter by Coworker Id.
</ParamField>

<ParamField query="FailedCheckin_Coworker_FullName" type="string">
  Filter by full name of the coworker at the time of the failed check-in.
</ParamField>

<ParamField query="FailedCheckin_Business" type="integer">
  Filter by Business Id.
</ParamField>

<ParamField query="FailedCheckin_Business_Name" type="string">
  Filter by name of the location where the check-in was attempted.
</ParamField>

<ParamField query="FailedCheckin_CheckinAttemptTime" type="string">
  Filter by date and time when the check-in attempt occurred.
</ParamField>

<ParamField query="FailedCheckin_Source" type="integer">
  Filter by method used to initiate the check-in attempt (e.g. manual, Wi-Fi, app).
</ParamField>

<ParamField query="FailedCheckin_MacAddresses" type="string">
  Filter by mAC addresses of the device used during the check-in attempt, if available.
</ParamField>

<ParamField query="FailedCheckin_TeamsAtTheTimeOfCheckin" type="string">
  Filter by comma-separated list of teams the coworker belonged to at the time of the failed check-in.
</ParamField>

<ParamField query="FailedCheckin_TariffAtTheTimeOfCheckin" type="string">
  Filter by name of the pricing plan (tariff) assigned to the coworker at the time of the failed check-in.
</ParamField>

<ParamField query="FailedCheckin_Description" type="string">
  Filter by reason or explanation for why the check-in attempt failed.
</ParamField>

<ParamField query="FailedCheckin_CheckinAttemptTimeLocal" type="string">
  Filter by Checkin Attempt Time Local.
</ParamField>

### Range Filters

<ParamField query="from_FailedCheckin_CheckinAttemptTime" type="string">
  Filter by date and time when the check-in attempt occurred greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_FailedCheckin_CheckinAttemptTime" type="string">
  Filter by date and time when the check-in attempt occurred less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_FailedCheckin_CheckinAttemptTimeLocal" type="string">
  Filter by checkin attempt time local greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_FailedCheckin_CheckinAttemptTimeLocal" type="string">
  Filter by checkin attempt time local less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_FailedCheckin_CreatedOn" type="string">
  Filter records created on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_FailedCheckin_CreatedOn" type="string">
  Filter records created on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_FailedCheckin_UpdatedOn" type="string">
  Filter records updated on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_FailedCheckin_UpdatedOn" type="string">
  Filter records updated on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

## Code Examples

### Simple listing

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/spaces/failedcheckins?page=1&size=15&orderBy=CreatedOn&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/spaces/failedcheckins?' + new URLSearchParams({
      page: 1,
      size: 15,
      orderBy: 'CreatedOn',
      dir: 1 // Ascending
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/spaces/failedcheckins',
      params={
          'page': 1,
          'size': 15,
          'orderBy': 'CreatedOn',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Filtering by CreatedOn

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/spaces/failedcheckins?FailedCheckin_CreatedOn=example-value&orderBy=CreatedOn&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/spaces/failedcheckins?' + new URLSearchParams({
      FailedCheckin_CreatedOn: 'example-value',
      orderBy: 'CreatedOn',
      dir: 1
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/spaces/failedcheckins',
      params={
          'FailedCheckin_CreatedOn': 'example-value',
          'orderBy': 'CreatedOn',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Range filters

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/spaces/failedcheckins?from_FailedCheckin_UpdatedOn=2025-01-01T00:00&to_FailedCheckin_UpdatedOn=2025-12-31T23:59&orderBy=UpdatedOn&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/spaces/failedcheckins?' + new URLSearchParams({
      from_FailedCheckin_UpdatedOn: '2025-01-01T00:00',
      to_FailedCheckin_UpdatedOn: '2025-12-31T23:59',
      orderBy: 'UpdatedOn',
      dir: 1 // Descending
     }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/spaces/failedcheckins',
      params={
          'from_FailedCheckin_UpdatedOn': '2025-01-01T00:00',
          'to_FailedCheckin_UpdatedOn': '2025-12-31T23:59',
          'orderBy': 'UpdatedOn',
          'dir': 1 // Descending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="Records" type="FailedCheckin[]">
  The list of FailedCheckin records matching the query. See the [Get one FailedCheckin](/rest-api/spaces/get-failedcheckins-by-id) endpoint for the full list of properties returned for each record.
</ResponseField>

<ResponseField name="CurrentPage" type="integer">
  Current page number.
</ResponseField>

<ResponseField name="CurrentPageSize" type="integer">
  Number of records per page.
</ResponseField>

<ResponseField name="CurrentOrderField" type="string">
  The field used for sorting.
</ResponseField>

<ResponseField name="CurrentSortDirection" type="integer">
  The sort direction (`0` = ascending, `1` = descending).
</ResponseField>

<ResponseField name="FirstItem" type="integer">
  Index of the first item on the current page.
</ResponseField>

<ResponseField name="LastItem" type="integer">
  Index of the last item on the current page.
</ResponseField>

<ResponseField name="TotalItems" type="integer">
  Total number of matching records across all pages.
</ResponseField>

<ResponseField name="TotalPages" type="integer">
  Total number of pages.
</ResponseField>

<ResponseField name="HasNextPage" type="boolean">
  Whether there is a next page of results.
</ResponseField>

<ResponseField name="HasPreviousPage" type="boolean">
  Whether there is a previous page of results.
</ResponseField>

```json Example Response theme={null}
{
  "Records": [
    {
      "CoworkerId": null,
      "CoworkerFullName": null,
      "BusinessId": 0,
      "BusinessName": null,
      "CheckinAttemptTime": "2025-01-15T10:30:00Z",
      "Source": 0,
      "MacAddresses": null,
      "TeamsAtTheTimeOfCheckin": null,
      "TariffAtTheTimeOfCheckin": null,
      "Description": null,
      "CheckinAttemptTimeLocal": null,
      "Id": 87654321,
      "UpdatedOn": "2025-01-15T10:30:00Z",
      "CreatedOn": "2025-01-10T08:00:00Z",
      "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "UpdatedBy": "admin@example.com",
      "IsNew": false,
      "SystemId": null,
      "ToStringText": "FailedCheckin Example",
      "LocalizationDetails": null,
      "CustomFields": null
    }
  ],
  "CurrentPageSize": 15,
  "CurrentPage": 1,
  "CurrentOrderField": "CreatedOn",
  "CurrentSortDirection": 1,
  "FirstItem": 1,
  "HasNextPage": false,
  "HasPreviousPage": false,
  "LastItem": 1,
  "PageNumber": 1,
  "PageSize": 15,
  "TotalItems": 1,
  "TotalPages": 1
}
```
