---
title: "Authorize a destination with the paying wallet's signature"
method: POST
path: "/destination/authorize"
---

# Authorize a destination with the paying wallet's signature

`POST /destination/authorize`

## Request

- Base URL: `https://swap.vurto.cc/v1`
- URL: `https://swap.vurto.cc/v1/destination/authorize`
- Auth: none required

Verifies the signature over the exact challenge text and stores a short authorization (until the challenge expiry) for wallet + receiver + chain. There is no header, flag or parameter that replaces the signature. Each code works once. Smart-contract wallets (EIP-1271, e.g. Safe) are verified by calling isValidSignature on the wallet contract on that chain.

## Request body

- object
  - `wallet` string, required
  - `receiver` string, required
  - `chainId` union, required
    - integer
    - 'solana-mainnet'
  - `nonce` string, required
  - `message` string, required: The challenge text, unchanged.
  - `signature` string: EVM: 0x hex signature, EIP-191 over `message` or EIP-712 over `typedData`. Solana: base58 ed25519 signature over `message`. Send this OR transaction.
  - `transaction` string: Solana only: the signed proofTransaction, base64. It is verified, never broadcast.

## Response `200`

Authorized

- object
  - `authorized` boolean
  - `wallet` string
  - `destination` string
  - `chainId` string
  - `expiresAt` integer

## Other responses

- `401`: signature_invalid, signature_wallet_mismatch, authorization_invalid, authorization_expired, authorization_replayed, authorization_destination_mismatch or authorization_network_mismatch

---

[API](https://skmtc.dev/vurto/apis/vurto-swap-public-api.md) · [All operations](https://skmtc.dev/vurto/apis/vurto-swap-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vurto/apis/vurto-swap-public-api/revisions/423be3a193b5?raw)
