For the complete documentation index, see llms.txt. This page is also available as Markdown.

Execute FX with permit

Executes an on-chain FX exchange using an EIP-2612 permit signature. Derive amountOutMinimum from the FX quote; permitValue must be at least inputAmount. Final status is trackable via txHash.

post
/api/v1/fx-exchange-with-permit
Authorizations
X-Api-SignaturestringRequired

Partner Auth: EIP-191 signature by the partner's registered backend key, with X-Api-Deadline and optional X-Api-PublicKey headers. See the Signature and verify guide.

Header parameters
tokenIdstringRequired

The user's URID (NFT token id).

networkstringRequired

Network identifier: 5000 for mainnet, 5003 for testnet.

signstringRequired

Signature generated by the user's wallet key (EIP-191).

hashstringRequired

SHA3/Keccak256 hash of the original request payload.

deadlinestringRequired

Signature expiry: server timestamp plus a validity window (max 20 minutes).

Body
userAddressstringRequired

User's wallet address.

inputTokenstringRequired

Input fiat token contract address.

outputTokenstringRequired

Output fiat token contract address.

inputAmountstringRequired

Exact-in amount in smallest units.

amountOutMinimumstringRequired

Minimum acceptable output in smallest units, from the quote.

permitValuestringRequired

Permit value; must be greater than or equal to inputAmount.

permitDeadlineintegerRequired

Unix seconds until which the permit is valid.

permitVintegerRequired

EIP-2612 signature component v.

permitRstringRequired

EIP-2612 signature component r (32-byte hex).

permitSstringRequired

EIP-2612 signature component s (32-byte hex).

Responses
200

Response envelope. For the user API, retCode 0 means success; for the partner API, code 0 means success. Business rejections return HTTP 200 with a non-zero code.

application/json

Standard response envelope for the user API (api.ur.app).

retCodeinteger · int64Required

0 on success; non-zero indicates failure.

retMsgstringRequired

Human-readable message; error details when retCode is non-zero.

resultanyOptional

Business payload. Shape depends on the endpoint; some endpoints return it as a JSON-encoded string.

timeNowinteger · int64Optional

Server timestamp in milliseconds.

post/api/v1/fx-exchange-with-permit
POST /api/v1/fx-exchange-with-permit HTTP/1.1
Host: api.ur.app
X-Api-Signature: YOUR_API_KEY
tokenId: text
network: text
sign: text
hash: text
deadline: text
Content-Type: application/json
Accept: */*
Content-Length: 196

{
  "userAddress": "text",
  "inputToken": "text",
  "outputToken": "text",
  "inputAmount": "text",
  "amountOutMinimum": "text",
  "permitValue": "text",
  "permitDeadline": 1,
  "permitV": 1,
  "permitR": "text",
  "permitS": "text"
}
200

Response envelope. For the user API, retCode 0 means success; for the partner API, code 0 means success. Business rejections return HTTP 200 with a non-zero code.

{
  "retCode": 0,
  "retMsg": "success",
  "result": {
    "txHash": "0xabc123def456..."
  },
  "timeNow": 1703123456789
}

Last updated