---
title: "Get Unsigned Create Order Message"
method: POST
path: "/write/api/v1/orders/sign-message"
tags: ["Maker"]
---

# Get Unsigned Create Order Message

`POST /write/api/v1/orders/sign-message`

## Request

- Base URL: `https://zap-api.kyberswap.com/arbitrum`
- URL: `https://zap-api.kyberswap.com/arbitrum/write/api/v1/orders/sign-message`
- Auth: none declared
- TypeScript: <https://skmtc.dev/kyberswap/apis/zap-service/docs/write/api/v1/orders/sign-message/post.ts> (a function with typed inputs; its response is checked against the schema)

Get EIP712 create order message to be signed. The response of this API will need to be signed with [Sign Typed Data v4](https://docs.metamask.io/guide/signing-data.html#sign-typed-data-v4) before submitting create order request to KyberSwap via `/write/api/v1/orders`.

## Request body

- object
  - `chainId` string, required: The chainId on which the order is being created. Only supports EVM chains.
  - `makerAsset` string, required: The token address of the asset which the Maker is selling.
  - `takerAsset` string, required: The token address of the asset which the Maker expects in return.
  - `maker` string, required: The address of the Maker.
  - `receiver` string: Defines who will receive the takerAsset when the order is filled. Default: `maker`.
  - `allowedSenders` string[]: Defines the addresses who are allowed to fill the order.
  - `makingAmount` string, required: The amount of `makerAsset` in wei. String representation of uint256 value.
  - `takingAmount` string, required: The amount of `takerAsset` in wei. String representation of uint256 value.
  - `expiredAt` integer, required: The unix timestamp upon which the order will automatically lapse (i.e. expire).

## Response `200`

OK

- object
  - `code` integer, required: The response code.
  - `message` string, required: Server response message.
  - `data` object, required
    - `types` object, required
      - `EIP712Domain` OrderSignMessageDefinition[], required
        - `name` string, required
        - `type` string, required
      - `Order` OrderSignMessageDefinition[], required
        - `name` string, required
        - `type` string, required
    - `domain` object, required
      - `name` string, required: The user readable name of signing domain, i.e. the name of the DApp or the protocol.
      - `version` string, required: The current major version of the signing domain. Signatures from different versions are not compatible.
      - `chainId` string, required: The EIP-155 chain id. The user-agent should refuse signing if it does not match the currently active chain.
      - `verifyingContract` string, required: the address of the contract that will verify the signature. The user-agent may do contract specific phishing prevention.
    - `primaryType` string, required: The top-level type of the object in the EIP712 message but does not have to correspond to any of the types in the message.
    - `message` object, required
      - `salt` string, required: The randomized data fed as an additional input to the hashing function.
      - `makerAsset` string, required: The token address of the asset which the Maker is selling.
      - `takerAsset` string, required: The token address of the asset which the Maker expects in return.
      - `maker` string, required: The address of the Maker.
      - `receiver` string, required: The receiver of the takerAsset when order is filled.
      - `allowedSender` string, required: Defines the addresses who are allowed to fill the order. Deafults to `0x000...` if none specified.
      - `makingAmount` string, required: The amount of `makerAsset` in wei.
      - `takingAmount` string, required: The amount of `takerAsset` in wei.
      - `feeConfig` string, required: The hashstring representing the fee configuration for the order.
      - `takerTokenFeeAmount` string: The amount of token taken from the Taker as the limit order fee.
      - `makerAssetData` string, required: ABIv2 encoded data that can be decoded by a specified proxy contract when transferring makerAsset.
      - `takerAssetData` string, required: ABIv2 encoded data that can be decoded by a specified proxy contract when transferring takerAsset.
      - `getMakerAmount` string, required: The hexstring representing the `makerAsset` amount.
      - `getTakerAmount` string, required: The hexstring representing the `takerAsset` amount.
      - `predicate` string, required: Call data that indicates the validity of the orders logic.
      - `permit` string: Included data if token is able to leverage Permit function (EIP2612) for gasless approvals.
      - `interaction` string, required: Call data that is sent to an intermediate contract when the order is filled.

## Other responses

- `400`: Bad Request - Missing required fields - chainId is not supported - makerAsset, takerAsset, maker, receiver, allowedSenders are not ETH address - makerAsset or takerAsset are native tokens - makingAmount, takingAmount are less than or equal to 0 - makingAmount, takingAmount are not uint128 - expiredAt is in the past
- `500`: Internal Server Error

---

[API](https://skmtc.dev/kyberswap/apis/zap-service.md) - [All operations](https://skmtc.dev/kyberswap/apis/zap-service/llms.txt) - [OpenAPI document](https://skmtc.dev/kyberswap/apis/zap-service/revisions/74dbd81c8d70?raw)
