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

# endstate.chips.get

> Chip ids are matched either case and always returned uppercase.

```ts theme={null}
get(chipId: string, options?: RequestOptions): Promise<Chip>
```

|             |                                                                |
| ----------- | -------------------------------------------------------------- |
| Endpoint    | [`GET /v1/chips/{chip_id}`](/api-reference/chips/fetch-a-chip) |
| Credential  | Secret key (`end_sk_...`)                                      |
| Retry class | `read`                                                         |

Retried on network failure, timeout, `429`, and `5xx`.

## Example

```ts theme={null}
const result = await endstate.chips.get("ABCDEF0123");
```

## Parameters

<ParamField body="chip_id" type="string" required>
  Chip identifier from the tap URL. Always returned uppercase.
</ParamField>

## Returns

`200` - `Chip`.

<ResponseField name="chip_id" type="string" required>
  Chip identifier from the tap URL.
</ResponseField>

<ResponseField name="is_test" type="boolean" required>
  True for a test chip, false for a chip encoded onto physical hardware.
</ResponseField>

<ResponseField name="scan_count" type="integer" required>
  Number of taps recorded for this chip.
</ResponseField>

<ResponseField name="created_at" type="string" required />

<ResponseField name="unit" type="object | null" required>
  Snapshot of the unit this chip is paired to, including its collection and issuance status. Null when the chip is not paired to a unit.
</ResponseField>

## Errors

Branch on `error.code`, never on the HTTP status - several codes share one.

| Code                  | HTTP | Retry         |
| --------------------- | ---- | ------------- |
| `auth.unauthorized`   | 401  | Do not retry  |
| `chip.not_found`      | 404  | Do not retry  |
| `internal.error`      | 500  | Safe to retry |
| `rate_limit.exceeded` | 429  | Safe to retry |
| `validation.failed`   | 400  | Do not retry  |

See [Errors and retries](/sdks/core/errors-and-retries) for the error types and how to narrow them.
