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

# Get Started with Unit API

> Endpoints, authentication, common request and response formats, and billing rules for Unit API, which lets you call identity verification features one at a time.

Unit API lets you **pick and call identity verification features one at a time**, such as ID OCR, face comparison, and government record checks. You can add only the checks you need to your service, without going through the Liveform submission flow.

* One call returns one result. No submission is created.
* Every call is **synchronous**. You get the result in the response, and there are no webhooks.
* Only calls that return a result are billed. Calls that end in an error are not billed.

> [card] [Unit API Reference](https://client-api.argosidentity.com/docs#en/description/introduction)
>
> Check the request and response specs for every API, copy call code for your language, and download the OpenAPI document.

> [!TIP]
>
> To see results before writing any code, run a call from **Unit API > API Test** in the dashboard. The endpoint and a cURL example are shown before you run, so you can copy them and start integrating. [Dashboard Unit API guide](https://developers.argosidentity.com/dashboard/en/unit-api.md)

***

## Available APIs

### Image and text analysis

| API | Tx Code | What it does | Result |
| - | - | - | - |
| [ID-OCR](https://developers.argosidentity.com/en/idcheck/unit-api/id-ocr.md) | `ID_OCR` | Recognizes the ID type and reads the printed fields | Recognized fields |
| [ID-LIVE](https://developers.argosidentity.com/en/idcheck/unit-api/id-live.md) | `ID_LIVE` | Checks whether an ID image was taken of the physical card | 0–100 score |
| [FACE-COM](https://developers.argosidentity.com/en/idcheck/unit-api/face-com.md) | `FACE_COM` | Compares whether two faces belong to the same person | 0–1 similarity |
| [FACE-LIVE-PSV](https://developers.argosidentity.com/en/idcheck/unit-api/face-live-psv.md) | `FACE_LIVE_PSV` | Checks whether a single selfie was taken of a live person | 0–100 score |
| [TXT-FZ-MAT](https://developers.argosidentity.com/en/idcheck/unit-api/txt-fz-mat.md) | `TXT_FZ_MAT` | Compares how similar two names are | 0–100 similarity |

### Government and bank record checks

| API | Tx Code | What it does | Source |
| - | - | - | - |
| [GC-KOR-NID](https://developers.argosidentity.com/en/idcheck/unit-api/gc-kor-nid.md) | `GC_KOR_NID` | Korean resident registration card authenticity check | Ministry of the Interior and Safety |
| [GC-KOR-DRV](https://developers.argosidentity.com/en/idcheck/unit-api/gc-kor-drv.md) | `GC_KOR_DRV` | Korean driver's license authenticity check | Korean National Police Agency |
| [GC-KOR-PASS](https://developers.argosidentity.com/en/idcheck/unit-api/gc-kor-pass.md) | `GC_KOR_PASS` | Korean passport authenticity check | Ministry of Foreign Affairs |
| [GC-KOR-ARC](https://developers.argosidentity.com/en/idcheck/unit-api/gc-kor-arc.md) | `GC_KOR_ARC` | Korean alien registration card authenticity check | Ministry of Justice |
| [GC-KOR-FPS](https://developers.argosidentity.com/en/idcheck/unit-api/gc-kor-fps.md) | `GC_KOR_FPS` | Foreign resident stay status check | Ministry of Justice |
| [GC-KOR-BRS](https://developers.argosidentity.com/en/idcheck/unit-api/gc-kor-brs.md) | `GC_KOR_BRS` | Korean business status lookup | National Tax Service |
| [GC-KOR-BIV](https://developers.argosidentity.com/en/idcheck/unit-api/gc-kor-biv.md) | `GC_KOR_BIV` | Korean business registration authenticity check | National Tax Service |
| [GC-MEX-CURP](https://developers.argosidentity.com/en/idcheck/unit-api/gc-mex-curp.md) | `GC_MEX_CURP` | Mexico CURP lookup | RENAPO |
| [BANK-KOR-AON](https://developers.argosidentity.com/en/idcheck/unit-api/bank-kor-aon.md) | `BANK_KOR_AON` | Korean account holder name lookup | Banks |

Record checks summarize the source's answer as `verdict` and `verdictReason`. See [Reading verdicts](#reading-verdicts).

***

## Getting started

**1. Copy your Unit API key**

Copy the key from **Unit API > Unit API Key** in the dashboard. A key is issued automatically when a project is created, so there is nothing to request. Member role or higher is required.

**2. Try it in the dashboard**

In **API Test**, pick an API, enter values, and run it. Check the response, TX ID, endpoint, and cURL example.

**3. Call from your server**

Send the same request as the cURL example from your server. Use the key only on your server.

**4. Store the result and TX ID**

Store the result and `txId` in your system as soon as you receive the response. ARGOS does not store request or response bodies.

***

## Endpoints

Every Unit API is a `POST` request. Call the host of the region your project belongs to.

| Region | Host |
| - | - |
| US | `https://client-api.argosidentity.com` |
| KR | `https://kr.client-api.argosidentity.com` |

```text theme={null}
POST https://client-api.argosidentity.com/v1/units/{api}
```

* `{api}` is the path on each API page. Example: `/v1/units/id-ocr`
* All 14 APIs are available in every region.
* **A key works only in its project's region.** Calling another region's host returns `401`. Check your project's region in [Regions](https://developers.argosidentity.com/dashboard/en/region.md).

***

## Authentication

Put your project's **Unit API key** in the `x-api-key` request header.

```bash US theme={null}
curl -X POST "https://client-api.argosidentity.com/v1/units/txt-fz-mat" \
  -H "x-api-key: {yourUnitApiKey}" \
  -H "Content-Type: application/json" \
  -d '{"text1": "Hong Gildong", "text2": "Gildong Hong", "referenceId": "order-20261103-0001"}'
```

```bash KR theme={null}
curl -X POST "https://kr.client-api.argosidentity.com/v1/units/txt-fz-mat" \
  -H "x-api-key: {yourUnitApiKey}" \
  -H "Content-Type: application/json" \
  -d '{"text1": "Hong Gildong", "text2": "Gildong Hong", "referenceId": "order-20261103-0001"}'
```

> [!WARNING]
>
> The Unit API key is different from the Liveform API key and the add-on API key. Each project has one. Send the key only in the header, never in the query string.

### Reissuing the key

* If the key is exposed or misuse is suspected, an **Owner or Leader** reissues it in the dashboard.
* Reissuing **revokes the previous key immediately**. Calls with the previous key are rejected with `401 INVALID_API_KEY` and are not billed.
* Who reissued the key and when is recorded in the key history and the [Event Log](https://developers.argosidentity.com/dashboard/en/event.md).

> [!WARNING]
>
> The **emergency stop** in project settings does not apply to Unit API calls. To block Unit API calls, reissue the key.

***

## Request rules

* Send a JSON body with `Content-Type: application/json`. Other types are rejected with `415 UNSUPPORTED_MEDIA_TYPE`.
* **Fields that are not in the contract are rejected with `400 UNKNOWN_PARAMETER`.** This prevents a typo from being silently ignored and billed with an unexpected result.
* An empty string (`""`) or `null` is not treated as "not sent" and is rejected with `400 INVALID_PARAMETER_FORMAT`. If an optional field has no value, leave the key out.
* Dates use the `YYYY-MM-DD` format. Example: `2019-03-14`

### Images

* Send images as Base64 strings. A prefix such as `data:image/jpeg;base64,` is optional.
* **Only JPEG and PNG are accepted.** Convert iPhone HEIC, GIF, BMP, and other formats to JPEG before sending.
* Each image can be up to about 3 MB in original size (4,000,064 Base64 characters without the prefix). Larger images return `400 PARAMETER_OUT_OF_RANGE`. Most ID photos taken with a phone can be sent as is.

### referenceId

Every API accepts an optional `referenceId` field.

| Field | Type | Description |
| - | - | - |
| `referenceId` | string, 1–100 characters | Your own identifier (order number, member number, and so on). It is returned in the response and stored in the call record. **Do not put personal information in it.** |

If you send a different value for each call, you can find a call later even if you never received its response. See [Duplicate calls and retries](https://developers.argosidentity.com/en/idcheck/unit-api/errors.md#duplicate-calls-and-retries).

***

## Common response

A successful (`200`) response has the same shape for every API. Fields that describe the call are at the top level, and the result the API produced is inside `data`.

```json theme={null}
{
  "txId": "01a17c3a-646f-762e-bb38-fe0cae059282",
  "txCode": "FACE_LIVE_PSV",
  "createdAt": "2026-11-03T07:19:24.015Z",
  "latencyMs": 812,
  "billing": {
    "unit": "response",
    "count": 1,
    "unitPrice": 0.08,
    "credit": 0.08,
    "pricingVersion": "v4.0_KOR"
  },
  "referenceId": "order-20261103-0001",
  "data": {
    "livenessScore": 93
  }
}
```

**txId** `string` *required*

The TX ID of this call. Use it to search the dashboard call history and when contacting support. Same value as the `X-Tx-Id` response header.

**txCode** `string` *required*

The code of the API you called. Examples: `ID_OCR`, `GC_KOR_NID`

**createdAt** `string` *required*

When the request was received, in UTC (RFC 3339) with millisecond precision.

**latencyMs** `integer` *required*

Time from receiving the request to responding, in milliseconds.

**billing** `object` *required*

Billing details for this call.

**properties**

**unit** `string` *required*

What is counted: `recognition` (recognized sides), `pipeline` (checks), `compare` (comparisons), or `response` (responses).

**count** `integer` *required*

Number of units billed for this call.

**unitPrice** `number` *required*

Credits per unit, up to three decimal places.

**credit** `number` *required*

Credits deducted for this call. For APIs with bundle pricing (ID-LIVE), this can differ from `unitPrice × count`.

**pricingVersion** `string` *required*

The price table actually applied: `v3.1_USA`, `v4.0_KOR`, or `Trial` for trial projects.

**referenceId** `string | null` *required*

The `referenceId` you sent, or `null` if you did not send one.

**data** `object` *required*

The result the API produced. See each API page for its structure.

> [!NOTE]
>
> Defined response fields are never omitted; they come as `null` when there is no value. On the other hand, **new response fields and enum values can be added within `v1`**, so make sure unknown fields or values do not break your code. [Versioning policy](https://developers.argosidentity.com/en/idcheck/unit-api/errors.md#versioning-policy)

### Reading verdicts

Record check APIs return the following fields inside `data`. GC-MEX-CURP is the only exception: it returns the registry status as is, without a verdict.

| Field | Description |
| - | - |
| `verdict` | The verdict: `MATCH`, `MISMATCH`, or `REJECTED`. Which values are used and what they mean differ slightly by API, so check each page |
| `verdictReason` | The reason for the verdict. `null` for `MATCH`. Use it to decide whether retrying can change the result |
| `agency` | The source's raw response. **Not covered by the contract.** It can change without notice when the source changes its fields, so branch on `verdict` and `verdictReason` |

* `MATCH`: Matches the source's records.
* `MISMATCH`: The source answered that it does not match. **A lookup was made, so it is billed.**
* `REJECTED`: Genuine, but no longer valid (a passport that lost its validity, or a suspended or closed business).

Image and text analysis APIs return only scores and measurements. **You decide the pass threshold.**

***

## Billing

Credits are deducted only for calls that return a result. You can see the deducted credits in `billing.credit` and in the dashboard call history.

* **Calls that return a result are billed.** A low face similarity or a `MISMATCH` from the source is still a result, so it is billed.
* **Calls that end in an error are not billed.** This covers every response whose HTTP status is not `200`.
* **Calls run from the dashboard API Test are billed the same way.**
* **Trial projects are not billed.** Instead, the number of calls per month is limited. [Usage by project status](#usage-by-project-status)
* Sending the same request twice is processed and billed as two calls.

### Prices by API

Projects on the `v3.1_USA` plan use USA prices; all other plans use KOR prices. Prices are in credits.

| API | Billing unit (`count`) | KOR price | USA price |
| - | - | :-: | :-: |
| ID-OCR | Recognized sides (1–2) | 0.24 per side | 0.32 per side · 0.36 per side for `universal` when the issuing country is not KOR |
| ID-LIVE | Checks that returned a score (1–3) | 1: 0.07 · 2–3: 0.14 | 1: 0.09 · 2–3: 0.18 |
| FACE-COM | 1 | 0.01 | 0.06 |
| FACE-LIVE-PSV | 1 | 0.08 | 0.12 |
| TXT-FZ-MAT | 1 | 0.01 | 0.012 |
| GC-KOR-NID | 1 | 0.04 | 0.12 |
| GC-KOR-DRV | 1 | 0.04 | 0.12 |
| GC-KOR-PASS | 1 | 0.04 | 0.12 |
| GC-KOR-ARC | 1 | 0.04 | 0.12 |
| GC-KOR-FPS | 1 | 0.04 | 0.058 |
| GC-KOR-BRS | 1 | 0.01 | 0.012 |
| GC-KOR-BIV | 1 | 0.01 | 0.012 |
| GC-MEX-CURP | 1 | 0.09 | 0.09 |
| BANK-KOR-AON | 1 | 0.04 | 0.10 |

You can also check your project's prices in **Unit API > API Test** in the dashboard.

***

## Usage by project status

| Project status | Calls | Limit | Billed |
| - | :-: | - | :-: |
| Service (`OPEN`) | Allowed | No limit | Yes |
| Test (`TEST`) | Allowed | No limit | Yes |
| Trial (`TRIAL`) | Allowed | 10 per month | No |
| Closed (`CLOSE`) | Not allowed | `403 ACCESS_FORBIDDEN` | - |

* The trial limit counts **all calls, including errors**. Unbilled error calls and calls rejected for exceeding the limit are included.
* The limit resets at 00:00 UTC on the first day of each month.
* Once the limit is reached, calls return `429 TRIAL_LIMIT_EXCEEDED`, and the `Retry-After` header holds the seconds until the reset.

***

## Data retention and privacy

* **Request and response bodies are not stored.** Store the result with its `txId` in your system as soon as you receive the response. You cannot retrieve results from ARGOS later.
* **Call records are kept for 3 years.** They include the call time, API, result, error code, processing time, count, credits, source (live or API test), the user who ran it, and `referenceId`.
* Even for testing, you need a lawful basis, such as the data subject's consent, to use real personal information.

***

## Next steps

> [card] [Error codes and retries](https://developers.argosidentity.com/en/idcheck/unit-api/errors.md)
>
> Error response format, what to do for each code, and retry rules

> [card] [Unit API in the dashboard](https://developers.argosidentity.com/dashboard/en/unit-api.md)
>
> API Test, call history, and key management


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.