---
title: "Read a paid Router result (retained for 24 hours)"
method: GET
path: "/router/payments/{id}/result"
tags: ["Router"]
---

# Read a paid Router result (retained for 24 hours)

`GET /router/payments/{id}/result`

## Request

- Base URL: `https://api.sandbox.nevermined.app/api/v1`
- URL: `https://api.sandbox.nevermined.app/api/v1/router/payments/{id}/result`
- Auth: HTTP bearer

Every paid call made through `POST /router/route` (and its `commerce` counterpart) is kept for you, the paying user, for 24 hours after it ends, so a response lost on the way back — a client timeout, a dropped connection — can still be read. `/router/proxy` and `/router/svc` keep a result only when they answered `202`; a response that had already started streaming to you is never stored.

A paid call whose merchant has not answered within 45 s is answered `202` with `{ paymentId, resultUrl, status: "Pending" }` instead of holding your connection (API 1.48 or later). Poll this endpoint:

- `202`, `state: Pending` — still running.
- `200`, `state: Ready` — `status` and `body` are the relayed response, withheld exactly as the original response would have been.
- `200`, `state: Failed` — the call ended without a response; `failureReason` says why.
- `404` `BCK.ROUTER.0030` — nothing to return: expired, never retained, or not a payment of yours (deliberately indistinguishable).

## Path parameters

- `id` string, required

## Response `200`

The result is `Ready`, or the call ended `Failed`.

- RouterPaymentResultDto: A paid Router result retained for its payer for 24 hours.
  - `paymentId` string, required
  - `state` 'Pending' | 'Ready' | 'Failed', required
  - `resultUrl` string, required
  - `expiresAt` string, required: When the result is deleted. Until then only you can read it.
  - `status` number, nullable: The upstream HTTP status of the paid call. `Ready` only.
  - `body` unknown
  - `bodyEncoding` 'json' | 'text' | 'base64' | 'null', nullable: `json` — the parsed JSON value; `text` — a UTF-8 string; `base64` — binary, base64-encoded. Null when there is no body.
  - `contentType` string, nullable: The upstream content type, for a streamed call (`/router/proxy`, `/router/svc`).
  - `headers` object: The response headers the streamed call would have relayed. Empty for a `/router/route` result.
  - `failureReason` string, nullable: Why a `Failed` result has no response.
  - `payment` RouterPaymentResultPaymentDto, required
    - `paymentId` string, required
    - `status` 'Issued' | 'Settled' | 'Failed', required
    - `txHash` string, nullable, required: The settlement reference, once the merchant reported one.

## Other responses

- `202`: The paid call is still running (`state: Pending`).
- `400`: `id` is not a valid uuid (BCK.HTTP.400).
- `401`: Missing/invalid Nevermined API key.
- `404`: No retained result for this id under your account — expired, never retained, or not yours (BCK.ROUTER.0030).

---

[API](https://skmtc.dev/nevermined/apis/nevermined-api.md) · [All operations](https://skmtc.dev/nevermined/apis/nevermined-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nevermined/apis/nevermined-api/revisions/cabbe618c80b?raw)
