---
title: "submit"
method: POST
path: "/gasless/submit"
tags: ["Gasless"]
---

# submit

`POST /gasless/submit`

Submit a gasless swap

## Headers

- `0x-api-key` string, required
- `0x-version` string, required

## Request body

- object
  - `chainId` integer, required — Chain ID. See [here](https://docs.0x.org/docs/introduction/supported-chains) for the list of supported chains
  - `approval` object, nullable — The gasless approval object from the quote endpoint including its signature
    - `type` 'executeMetaTransaction::approve' | 'permit' | 'erc7597Permit' | 'daiPermit', required — The `approval.type` from the quote endpoint
    - `eip712` union, required
      - object
        - `types` object, required
          - `EIP712Domain` object[], required
            - `name` string, required
            - `type` string, required
          - `Permit` object[], required
            - `name` string, required
            - `type` string, required
        - `domain` object, required
          - `name` string
          - `version` string
          - `chainId` number
          - `verifyingContract` string
          - `salt` string
        - `message` object, required
          - `owner` string, required
          - `spender` string, required
          - `value` string, required
          - `nonce` number, required
          - `deadline` string, required
        - `primaryType` 'Permit', required
      - object
        - `types` object, required
          - `EIP712Domain` object[], required
            - `name` string, required
            - `type` string, required
          - `Permit` object[], required
            - `name` string, required
            - `type` string, required
        - `domain` object, required
          - `name` string
          - `version` string
          - `chainId` number
          - `verifyingContract` string
          - `salt` string
        - `message` object, required
          - `holder` string, required
          - `spender` string, required
          - `nonce` number, required
          - `expiry` string, required
          - `allowed` boolean, required
        - `primaryType` 'Permit', required
      - object
        - `types` object, required
          - `EIP712Domain` object[], required
            - `name` string, required
            - `type` string, required
          - `MetaTransaction` object[], required
            - `name` string, required
            - `type` string, required
        - `domain` object, required
          - `name` string
          - `version` string
          - `chainId` number
          - `verifyingContract` string
          - `salt` string
        - `message` object, required
          - `nonce` number, required
          - `from` string, required
          - `functionSignature` string, required
        - `primaryType` 'MetaTransaction', required
    - `signature` object, required — A discriminated union based on `signatureType`. For EIP712 (`signatureType: 2`) or EthSign (`signatureType: 3`): provide `v`, `r`, and `s`. For Raw (`signatureType: 5`): provide `signatureBytes` only. Use Raw (`signatureType: 5`) to support smart contract wallets (e.g. ERC-1271) that return opaque signature bytes.
      - `signatureType` number, required — Signature type enum: `2` (EIP712), `3` (EthSign), or `5` (Raw). Determines which other fields are required.
      - `v` number — ECDSA recovery id. Required when signatureType is `2` (EIP712) or `3` (EthSign).
      - `r` string — ECDSA signature r value (hex string). Required when signatureType is `2` (EIP712) or `3` (EthSign).
      - `s` string — ECDSA signature s value (hex string). Required when signatureType is `2` (EIP712) or `3` (EthSign).
      - `signatureBytes` string — Raw signature bytes (hex string). Required when signatureType is `5` (Raw). Must not be provided for other signature types.
  - `trade` object, required — The trade object from the quote endpoint including its signature
    - `type` 'settler_metatransaction', required — The `trade.type` from the quote endpoint
    - `eip712` object, required — The `trade.eip712` from the quote endpoint
      - `types` object, required
      - `primaryType` string, required
      - `domain` object, required
        - `name` string
        - `version` string
        - `chainId` number
        - `verifyingContract` string
        - `salt` string
      - `message` object, required
        - `permitted` object, required
          - `token` string, required
          - `amount` union, required
            - string
            - number
            - unknown
        - `spender` string, required
        - `nonce` union, required
          - string
          - number
          - unknown
        - `deadline` union, required
          - string
          - number
          - unknown
        - `slippageAndActions` object, required
          - `recipient` string, required
          - `buyToken` string, required
          - `minAmountOut` union, required
            - string
            - number
            - unknown
          - `actions` string[], required
    - `signature` object, required — A discriminated union based on `signatureType`. For EIP712 (`signatureType: 2`) or EthSign (`signatureType: 3`): provide `v`, `r`, and `s`. For Raw (`signatureType: 5`): provide `signatureBytes` only. Use Raw (`signatureType: 5`) to support smart contract wallets (e.g. ERC-1271) that return opaque signature bytes.
      - `signatureType` number, required — Signature type enum: `2` (EIP712), `3` (EthSign), or `5` (Raw). Determines which other fields are required.
      - `v` number — ECDSA recovery id. Required when signatureType is `2` (EIP712) or `3` (EthSign).
      - `r` string — ECDSA signature r value (hex string). Required when signatureType is `2` (EIP712) or `3` (EthSign).
      - `s` string — ECDSA signature s value (hex string). Required when signatureType is `2` (EIP712) or `3` (EthSign).
      - `signatureBytes` string — Raw signature bytes (hex string). Required when signatureType is `5` (Raw). Must not be provided for other signature types.

## Response `200`

Successful response

- object
  - `tradeHash` string, required — The hash for the trade according to [EIP-712](https://eips.ethereum.org/EIPS/eip-712)
  - `type` 'settler_metatransaction', required — The transaction type for a Gasless trade
  - `zid` string, required — The unique ZeroEx identifier of the request

## Other responses

- `400` — 400 error response
- `500` — 500 error response

## Changes

> 26 revisions in range; 3 could not be searched.

- **2026-06-18** `049e7c03762f` — 1 info
  - added `#/components/schemas/INVALID_APPROVAL` to the response body `anyOf` list for the response status `400`
- **2026-03-26** `fe6a8e3d1259` — 1 info
  - added `#/components/schemas/SMART_WALLET_NOT_SUPPORTED` to the response body `anyOf` list for the response status `400`
- **2026-03-26** `1d203788534f` — 8 info
  - added the new optional request property `approval/signature/signatureBytes`
  - added the new optional request property `trade/signature/signatureBytes`
  - the request property `approval/signature/r` became optional
  - the request property `approval/signature/s` became optional
  - …4 more

[Change history](https://skmtc.dev/0xproject/apis/0x-api/changes/gasless/submit/post.md)

---

[API](https://skmtc.dev/0xproject/apis/0x-api.md) · [All operations](https://skmtc.dev/0xproject/apis/0x-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/0xproject/0x-api/revisions/27a84feeb09b/schema)
