Respond with Self-Execution Quote

This mode enables users to request quotes that they can execute themselves. Upon request, solvers provide interaction details, in addition to quote amounts.

Request

Request from user for a quote.

{
 'chain_id': 42161,
 'msg_topic': 'taker_quote',
 'msg_type': 'request',
 'msg': {
   'quote_id': 'dc8afe28-bc96-446e-a134-9e4de5704dc4',
   'order_type': '121',
   'base_settle_gas': 145000,
   'approval_type': 'Standard',
   'taker': '0x43c33c2e0f3E076793f51028D80a490b3BEb4C09',
   'receiver': '0x43c33c2e0f3E076793f51028D80a490b3BEb4C09',
   'expiry': 1734441089,
   'exclusivity_deadline': 1734441089,
   'nonce': '293151850998689970227469782035377180100',
   'slippage': 0.1,
   'hooks_data': '0x',
   'partner_info': '0',
   'sell_tokens': [
     {
       'address': '0x6c84a8f1c29108F47a79964b5Fe888D4f4D0dE40',
       'amount': '83649370402483',
       'usd_price': 106695.0
     }
    ],
    'buy_tokens': [
      {
        'address': '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
        'amount': None,
        'usd_price': 3999.2
      }
    ],
    'native_token_price': 3999.2
  }
}

base_settle_gas is an estimate amount of gas the execution will use excluding any interactions. You may ignore this field for this mode.

Response

msg_topic

As per the request, the response msg_topic is taker_quote

msg

quote_id

As per the request.

amounts

Calculate your quote for all tokens listed in buy_tokens and respond with amount in the response.

Respond with a list of TokenAmountResponse

class TokenAmountResponse:
    address: str
    amount: str

fee

Must be "0" for self-execution mode.

executor

As opposed to gasless mode where the solver executes the order, in self-execution mode the executor is the taker. Respond with the address of taker from the request.

interactions

The interactions of the solution, returned as a list of InteractionDetails .

The InteractionDetails are comprised of a data field, and a gas field which represents the gas cost of the InteractionData .

class InteractionDetails:
    data: InteractionData
    gas: int
    
class InteractionData:
    result: bool
    to: str
    value: str
    data: str

By default, the balance_recipient is the Jam Contract. The solvers can specify the recipient of the user's funds.

Example Response

{
  'quote_id': 'ff3519e8-c7ef-4e3e-9b7b-615b26b4b12d',
  'amounts': [
    {
     'address': '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9',
      'amount': '388846147'
    }
  ],
  'fee': '0',
  'executor': '0x5Bad996643a924De21b6b2875c85C33F3c5bBcB6',
  'interactions': [
    {
     'data': {
       'result': True,
       'to': '0x5E325eDA8064b456f4781070C0738d849c824258',
       'value': '0',
       'data': '0x....0'
     },
     'gas': 264806
    }
   ],
  'balance_recipient': '0x5E325eDA8064b456f4781070C0738d849c824258'
}

Error Codes

In addition to a successful response, you may also return an error when the quote is unsuccessful.

Error
Descriptions
unavailable

Unavailable to provide quotes

not_supported

Type of order or tokens not supported

gas_exceeds_size

Order size is too small to cover fee

unknown

Unknown error

Example error response:

{
  "chain_id": 137,
  "msg_topic": "quote",
  "msg_type": "error",
  "msg": {
    "quote_id": "1cb3301c-6bf6-4e70-be02-3838137ae2eb",
    "error_type": "not_supported",
    "error_msg": "token 0x00 not supported",
  }
}

Last updated