---
title: "Submit a signed order for SIGNATURE-type venues (0x Gasless, CoW, Bebop, Relay permit)"
method: POST
path: "/api/v1/submit-signature"
tags: ["Swap"]
---

# Submit a signed order for SIGNATURE-type venues (0x Gasless, CoW, Bebop, Relay permit)

`POST /api/v1/submit-signature`

## Request

- Base URL: `https://app.ravn.exchange`
- URL: `https://app.ravn.exchange/api/v1/submit-signature`
- Auth: one of:
  - API key in header `x-api-key`
  - none

## Request body

- object
  - `quoteToken` string, required
  - `signature` string, required
  - `approvalSignature` string: 0x Gasless only: signature over the approval typed data from /api/v1/execute.

## Response `200`

Order submitted — poll GET /api/v1/status with the returned statusRef

- object
  - `data` object
    - `statusRef` string
    - `venue` string
  - `meta` Meta
    - `requestId` string, required
    - `version` string, required

## Other responses

- `400`: Invalid request, or venue does not use signature submission
- `401`: x-api-key present but invalid
- `422`: ORDER_REJECTED: the venue refused this submission; `message` carries its reason (e.g. missing allowance, expired quote). A duplicate-order refusal means an earlier submit of the same order went through: don't sign a new one.
- `502`: BUILD_FAILED: the venue errored on the order (its 5xx), or the swap couldn't be rebuilt from the quoteToken; `message` says why. After a venue error the order may still have been placed: check before signing a new one.
- `503`: VENUE_RATE_LIMITED: the venue is rate-limiting RAVN; retry the same call (same quoteToken and signature) after `error.details.retryAfterSec`.

---

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