Skip to main content
POST

Authorizations

X-Kairos-Partner-Id
string
header
required

Wallet API partner id, issued by Kairos together with the partner's base URL. Identifies the partner (tenant) on every /v3 call; sent instead of an API key. Letters, digits and ._:-, at most 64 characters, case-insensitive. A partner id issued for an individual account cannot be sent this way — that account sends its API key triple instead.

Headers

X-Kairos-Wallet-Api
enum<string>
required

Wallet API contract version. Send 2 — the multi-venue contract this reference documents. Without the header (or with any other value) /v3/actions and /v3/wallets/* serve the original Polymarket-only contract, which ignores venue prefixes, expiresAt and setup.venues, omits chainId, venue and fallbackRequests from steps, refuses orders on a wallet that is not set up (409), and returns snake_case order and position rows.

Available options:
2

Path Parameters

id
string<uuid>
required

Action id returned by POST /v3/actions.

Body

application/json

Answer to a needs_signature step. Send signature for signature prompts (65 bytes, hex, 0x optional); a JSON string in result is read as the signature. For wallet_sendCalls, send the wallet's return value (or the transaction hashes from fallbackRequests) as result.

signature
string

65-byte ECDSA signature, hex (0x optional).

Pattern: ^(0x)?[0-9a-fA-F]{130}$
Example:

"0x4f8b2c1d9e7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c3d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e1b"

result
any

The wallet's return value for wallet_sendCalls, or an array of transaction hashes.

Response

The next step — needs_signature (another prompt), working, done, or failed (with error and usually errorCode).

The current step of an action. Every response from /v3/actions and /v3/actions/{id} is one of these.

id
string<uuid>
required

Action id. One id for the whole action, across venues.

type
enum<string>
required
Available options:
setup,
order,
cancel,
login
status
enum<string>
required

needs_signature — run request and answer; working — poll; done — read result; failed — read error and errorCode.

Available options:
needs_signature,
working,
done,
failed
request
object | null
required

What the wallet must run. Non-null only while needs_signature.

Example:
description
string | null
required

Text to show with the wallet prompt (e.g. Confirm this Hyperliquid order), or progress text while working.

chainId
string | null
required

EIP-155 chain id (hex) the wallet must be on to answer — 0x89 Polygon, 0x38 BNB Chain, 0xa4b1 Arbitrum One (0x66eee Arbitrum Sepolia on Hyperliquid testnet). null for personal_sign and when nothing is asked.

Example:

"0x38"

venue
enum<string> | null
required

Venue of the current prompt; null when finished and on cancels.

Available options:
polymarket,
predictfun,
hyperliquid
result
object
required

Outcome on done (and the provisional outcome of a held order). Shape depends on type.

Example:
error
string | null
required

Why the action failed; non-null on failed.

fallbackRequests
object[]

Present with wallet_sendCalls requests only — the same calls as individual eth_sendTransaction requests, for wallets without EIP-5792. Send them in order and answer with {"result": ["0xhash", …]}.

expiresAtMs
integer<int64>

Last accepted millisecond (Unix ms) for answering this prompt. Answers after it fail the action with SIGNATURE_EXPIRED.

Example:

1793130772999

holdUntilMs
integer<int64>

On a working order the venue is still matching — poll again after this time (Unix ms). result then holds a provisional outcome with final: false.

errorCode
enum<string>

Machine-readable reason on a failed step; the key is omitted when the failure has no code. Codes may be added; treat an unknown code as a failure whose order was not placed.

Available options:
NO_MATCH,
VENUE_REJECTED,
ORDER_OUTCOME_UNKNOWN,
CANCEL_OUTCOME_UNKNOWN,
SIGNATURE_EXPIRED,
CLIENT_ORDER_ID_CONFLICT,
HYPERLIQUID_AGENT_MISSING