# Request ids

> Find any call again by its request id: what was asked, what came back, and how long it took.

Every response from the API carries an `X-Request-ID` header, the call's own id. Log it next to anything
your app does with the result, and you can find that exact call again.

## In the SDKs

Every error carries the id of the call that failed.

```python
from geniffy import GeniffyError

try:
    mem.context("Who signs the Lumen renewal?")
except GeniffyError as e:
    log.warning("geniffy failed: %s (request %s)", e.message, e.request_id)
```

```ts
import { GeniffyError } from "geniffy";

try {
  await mem.context("Who signs the Lumen renewal?");
} catch (e) {
  if (e instanceof GeniffyError) console.warn(`geniffy failed: ${e.message} (request ${e.requestId})`);
}
```

Over HTTP, read the `X-Request-ID` response header.

## In the Geniffy app

Paste a request id into the search on **Requests** in the Geniffy app to open that call: when it was
made, with which key, for which space, what was asked, what came back, how long it took, and which SDK
sent it. From there you can run the same call again in the **Playground**.

Calls are kept for 30 days. When you write to us about a call, send its request id.

Source: https://docs.geniffy.com/request-ids
