# Get a counterparty

`GET /api/v1/counterparties/{id}`

One counterparty, with up to 20 recent compliance screenings, newest first. An id this workspace does not hold, including another workspace's, answers `404`.

Send a [workspace API key](https://www.vestiarion.xyz/docs/get-started/authentication) as `Authorization: Bearer <key>`.

## Parameters

| Name | In | Type | Required | Default | Allowed values | Description |
| --- | --- | --- | --- | --- | --- | --- |
| `id` | path | string | Required | — | — | The counterparty's id. |

## Code samples

```bash
curl "https://www.vestiarion.xyz/api/v1/counterparties/<id>" \
  -H "Authorization: Bearer $VESTIARION_API_KEY"
```

## Response

Example, `200` `application/json`:

```json
{
  "data": {
    "id": "dc5e5751-3287-46c9-8bd1-83a42ab02699",
    "name": "Anthropic API Services",
    "role": "vendor",
    "address": "0x90a5821e8a59b711777c49d11a283c9c76cd811e",
    "chain": "ARC-TESTNET",
    "jurisdiction": null,
    "riskLevel": "clear",
    "riskNotes": "No match against watchlist",
    "baselinePaymentLimit": 5,
    "paymentLimit": 5,
    "lastScreenedAt": "2026-09-24T18:32:57.327+00:00",
    "performanceScore": 0.667,
    "performanceInputs": {
      "heldOrFlagged": 0,
      "heldByOurPolicy": 1,
      "riskTierChanges": 0,
      "duplicateSubmissions": 0,
      "informationRequested": 0,
      "paidWithoutIntervention": 1
    },
    "createdAt": "2026-09-24T11:54:57.677284+00:00",
    "screeningHistory": [
      {
        "id": "d49b558b-199f-46d5-a43e-ae2af3ad9c49",
        "riskLevel": "clear",
        "source": "simulated-sanctions-list",
        "notes": "No match against watchlist",
        "rawScore": null,
        "matchedEntityId": null,
        "screeningMode": "simulate",
        "status": "complete",
        "createdAt": "2026-09-24T18:32:58.403732+00:00"
      }
    ]
  }
}
```

**Fields**

- `data` (object, required): A counterparty, with its recent screening history.
  - `id` (string, required)
  - `name` (string, required)
  - `role` (string, required) One of `vendor`, `client`, `contractor`.
  - `address` (string, nullable, required)
  - `chain` (string, nullable, required)
  - `jurisdiction` (string, nullable, required)
  - `riskLevel` (string, required) One of `unscreened`, `clear`, `medium`, `high`.
  - `riskNotes` (string, nullable, required)
  - `baselinePaymentLimit` (number, nullable, required): The business's baseline payment limit for this counterparty.
  - `paymentLimit` (number, nullable, required): The current payment limit, derived from the risk tier.
  - `lastScreenedAt` (string, nullable, required)
  - `performanceScore` (number, nullable, required): No history is different from a zero score and remains null.
  - `performanceInputs` (object, nullable, required)
  - `createdAt` (string, required)
  - `screeningHistory` (array of object, required): Up to 20 recent screenings, newest first.
    - `id` (string, required)
    - `riskLevel` (string, required)
    - `source` (string, required)
    - `notes` (string, nullable, required)
    - `rawScore` (number, nullable, required)
    - `matchedEntityId` (string, nullable, required)
    - `screeningMode` (string, required) One of `live`, `simulate`.
    - `status` (string, required) One of `complete`, `failed`.
    - `createdAt` (string, required)

## Errors

| Status | Code | When |
| --- | --- | --- |
| 401 | `unauthorized` | No key, or a malformed, unknown or revoked one: "A valid API key is required." |
| 403 | `forbidden` | The key's scopes do not cover this route: "This key cannot do that." Or, on a write, the person who created the key can no longer add records: "This key's issuer can no longer add records in this workspace." |
| 404 | `not_found` | The requested resource does not exist in the key's workspace. |
| 500 | `internal` | An unexpected server error. Implementation details are not exposed. |
