# Request IDs

> Noryo-Request-Id identifies one HTTP attempt: its shape, why it changes on every retry, where to find it, and how to use it with support.

`Noryo-Request-Id` identifies **one HTTP attempt**. Noryo creates it for every request received, and it is the only handle support needs to find out what happened.

```http
noryo-request-id: req_01a07868-6443-79fa-a4c8-221f1745244f
```

## Its properties

| Property | Value |
|---|---|
| Shape | `req_` followed by a version 7 UUID |
| Ordering | Time-ordered: sorting by identifier means sorting by arrival time |
| Where | The `Noryo-Request-Id` header of **every** response, success or error; the `request_id` field of every error body |
| Uniqueness | One attempt, one identifier: the same in the header, the body and Noryo's logs, including on a `500` |
| Who chooses it | Noryo only. A `Noryo-Request-Id` sent by the client is ignored and replaced. |

## New on every attempt

A retry is a new attempt, hence a new identifier, **even when it returns a memorised response**:

| Attempt | `Idempotency-Key` | `Noryo-Request-Id` | `Noryo-Idempotency-Replayed` |
|---|---|---|---|
| 1 | `demo-001` | `req_01a07868-…` | `false` |
| 2 (retry) | `demo-001` | `req_01a0786b-…` | `true` |

The `Idempotency-Key` links the attempts of one operation; the `Noryo-Request-Id` tells each of them apart. Log both.

In a replayed body, the content is that of the first response; the identifier of the current attempt is the one in the header.

## Where to find it later

- **In your logs**, if you write it there: that is the recommendation.
- **On the [Usage](https://platform.noryo.app/usage) page of Platform**, under recent calls: every call that produced a result appears with its `request_id`, its date, its `enrichment_id`, its result and its units, engine failures included. Replays (by `Idempotency-Key` or by `external_transaction_id`) and attempts refused before computation (a `401`, a validation `400`, a `429`) do not appear there.

## With support

Quote the `Noryo-Request-Id` of the attempt concerned. It is enough to find the exact attempt in Noryo's logs: the route, the status returned, the error code, the time spent per step. You do not need to pass on your key, the descriptor or the `external_transaction_id`: never send them to support.

## What to log on your side

```ts
const res = await fetch(url, init);
logger.info({
  noryo_request_id: res.headers.get("noryo-request-id"),
  idempotency_key: idempotencyKey,
  status: res.status,
  replayed: res.headers.get("noryo-idempotency-replayed"),
});
```

Never log the `Authorization` header.

---

Canonical page: https://developer.noryo.app/en-GB/merchant/operations/request-ids
