---
title: "Read the relayer nonce (and GSN relay) for an imported Polymarket wallet"
method: POST
path: "/exchanges/polymarket/imported/relay-info"
tags: ["Deposit wallet"]
---

# Read the relayer nonce (and GSN relay) for an imported Polymarket wallet

`POST /exchanges/polymarket/imported/relay-info`

## Request

- Base URL: `https://execution.kairos.trade`
- URL: `https://execution.kairos.trade/exchanges/polymarket/imported/relay-info`
- Auth: API key in header `X-Client-Id` and API key in header `X-Api-Key` and API key in header `X-Api-Secret`

The imported-wallet analogue of the deposit-wallet nonce endpoint: returns the relayer nonce and, for a legacy ProxyWallet (`sig_type: proxy`), the GSN relay address needed to construct the digest the browser signs. For a Gnosis Safe (`sig_type: safe`) `relay` is always `null`.
Fetched server-side purely because Polymarket's relayer is CORS-blocked from browsers. The response is public information; the ownership check is belt-and-braces, not a secrecy boundary.
> **Error shape.** Most 4xx/5xx here have an **empty `text/plain` body**; the `502` cases carry a plain-text reason (`relay-payload fetch failed: …` / `nonce fetch failed: …`). Scope and identity failures return the structured envelope.
**Auth & scope.** Requires `trade:execute` for `polymarket` and identity + wallet ownership. No mutation gate, so a bare session JWT reaches it.

## Request body

- OrderImportedRelayInfoRequest
  - `user_id` string, uuid, required
  - `turnkey_org_id` string, required
  - `owner_address` string, required
  - `sig_type` 'proxy' | 'safe', required: Which imported Polymarket wallet model this is. Lower-case on the wire.

## Response `200`

Relayer nonce, plus the GSN relay for `proxy`.

- OrderImportedRelayInfoResponse
  - `nonce` string, required: Relayer nonce as a decimal U256 string.
  - `relay` string, nullable: The GSN relay address, needed to build the PROXY digest. **Always `null` when `sig_type` is `safe`.**

## Other responses

- `400`: Malformed or unparseable `owner_address`. Empty body (`text/plain`). An identity mismatch instead returns the structured `AuthIdentityMismatch` body.
- `401`: No valid credential presented — missing/invalid API-key headers or an invalid/expired session token.
- `403`: Missing `trade:execute` scope, API-key access to `polymarket` disabled, or an identity mismatch. Structured body.
- `500`: The relayer client is unavailable. Empty body (`text/plain`).
- `502`: Plain-text `relay-payload fetch failed: <reason>` (proxy) or `nonce fetch failed: <reason>` (safe).
- `503`: API-key access to `polymarket` could not be checked (fails closed). Structured body.

---

[API](https://skmtc.dev/kairos/apis/kairos-order-execution-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-order-execution-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-order-execution-api/revisions/9ba7d463d505?raw)
