CoW Swap · Schema
SolveRequest
Request to the solve endpoint.
DeFiEthereumSwapLiquidityGovernanceAMM
Properties
| Name | Type | Description |
|---|---|---|
| id | integer | The unique identifier of the auction. |
| orders | array | The solvable orders included in the auction. |
| tokens | array | Information about tokens used in the auction. |
| deadline | object | |
| surplusCapturingJitOrderOwners | array | List of addresses on whose surplus will count towards the objective value of their solution (unlike other orders that were created by the solver). |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/cow-protocol/json-schema/cow-protocol-solve-request-schema.json",
"title": "SolveRequest",
"description": "Request to the solve endpoint.",
"x-generated": "2026-10-28",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/driver.yml#/components/schemas/SolveRequest",
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier of the auction.\n"
},
"orders": {
"type": "array",
"items": {
"$ref": "#/$defs/Order"
},
"description": "The solvable orders included in the auction.\n"
},
"tokens": {
"type": "array",
"items": {
"$ref": "#/$defs/Token"
},
"description": "Information about tokens used in the auction.\n"
},
"deadline": {
"$ref": "#/$defs/DateTime"
},
"surplusCapturingJitOrderOwners": {
"type": "array",
"items": {
"$ref": "#/$defs/Address"
},
"description": "List of addresses on whose surplus will count towards the objective value of their solution (unlike other orders that were created by the solver).\n"
}
},
"$defs": {
"Address": {
"description": "20 byte Ethereum address encoded as a hex with `0x` prefix.",
"type": "string"
},
"DateTime": {
"description": "An ISO 8601 UTC date time string.",
"type": "string"
},
"FeePolicy": {
"description": "A fee policy that applies to an order.\nThe solver should make sure the fee policy is applied when computing their solution.\n",
"type": "object",
"oneOf": [
{
"$ref": "#/$defs/SurplusFee"
},
{
"$ref": "#/$defs/PriceImprovement"
},
{
"$ref": "#/$defs/VolumeFee"
}
]
},
"Interaction": {
"type": "object",
"properties": {
"target": {
"$ref": "#/$defs/Address"
},
"value": {
"$ref": "#/$defs/TokenAmount"
},
"callData": {
"description": "Hex encoded bytes with `0x` prefix.",
"type": "string"
}
}
},
"Order": {
"description": "Order information like what is returned by the Orderbook apis.\n",
"type": "object",
"properties": {
"uid": {
"$ref": "#/$defs/OrderUID"
},
"sellToken": {
"allOf": [
{
"description": "Token being sold"
},
{
"$ref": "#/$defs/Address"
}
]
},
"buyToken": {
"allOf": [
{
"description": "Token being bought"
},
{
"$ref": "#/$defs/Address"
}
]
},
"sellAmount": {
"allOf": [
{
"description": "Amount to be sold"
},
{
"$ref": "#/$defs/TokenAmount"
}
]
},
"buyAmount": {
"allOf": [
{
"description": "Amount to be bought"
},
{
"$ref": "#/$defs/TokenAmount"
}
]
},
"created": {
"description": "Creation time of the order. Denominated in epoch seconds.",
"type": "string"
},
"validTo": {
"description": "The time until which the order is valid.",
"type": "integer"
},
"kind": {
"type": "string",
"enum": [
"buy",
"sell"
]
},
"receiver": {
"allOf": [
{
"description": "The address that should receive the bought tokens."
},
{
"$ref": "#/$defs/Address"
}
]
},
"owner": {
"allOf": [
{
"description": "The address that created the order."
},
{
"$ref": "#/$defs/Address"
}
]
},
"partiallyFillable": {
"description": "Whether the order can be partially filled.\n\nIf this is false then the solver must fill the entire order or not\nat all.",
"type": "boolean"
},
"executed": {
"allOf": [
{
"description": "The amount that has already been filled."
},
{
"$ref": "#/$defs/TokenAmount"
}
]
},
"preInteractions": {
"description": "Interactions that must be executed before the order can be filled.",
"type": "array",
"items": {
"$ref": "#/$defs/Interaction"
}
},
"postInteractions": {
"description": "Interactions that must be executed after the order has been filled.",
"type": "array",
"items": {
"$ref": "#/$defs/Interaction"
}
},
"sellTokenBalance": {
"deprecated": true,
"description": "In practice only `erc20` occurs; `internal`/`external` (Balancer Vault) are deprecated and rejected at order creation. Retained for compatibility.\n",
"type": "string",
"enum": [
"erc20",
"internal",
"external"
]
},
"buyTokenBalance": {
"deprecated": true,
"description": "In practice only `erc20` occurs; `internal` (Balancer Vault) is rejected at order creation. Retained for compatibility.\n",
"type": "string",
"enum": [
"erc20",
"internal"
]
},
"class": {
"deprecated": true,
"description": "Every order is a `limit` order. The field is ignored by the driver, retained for compatibility and will be removed.\n",
"type": "string",
"enum": [
"market",
"limit"
],
"default": "limit"
},
"appData": {
"description": "32 bytes encoded as hex with `0x` prefix.",
"type": "string"
},
"signingScheme": {
"type": "string",
"enum": [
"eip712",
"ethsign",
"presign",
"eip1271"
]
},
"signature": {
"description": "Hex encoded bytes with `0x` prefix.",
"type": "string"
},
"protocolFees": {
"description": "Any protocol fee policies that apply to the order.\n\nThe solver should make sure the fee policy is applied when computing\ntheir solution.",
"type": "array",
"items": {
"$ref": "#/$defs/FeePolicy"
}
},
"quote": {
"allOf": [
{
"description": "A winning quote."
},
{
"$ref": "#/$defs/Quote"
}
]
},
"penaltyCapNative": {
"allOf": [
{
"description": "Cap on the penalty a solver can incur for winning this order\nbut failing to execute it, denominated in the native token."
},
{
"$ref": "#/$defs/TokenAmount"
}
]
}
},
"required": [
"uid",
"sellToken",
"buyToken",
"sellAmount",
"buyAmount",
"created",
"validTo",
"kind",
"receiver",
"owner",
"partiallyFillable",
"executed",
"preInteractions",
"postInteractions",
"sellTokenBalance",
"buyTokenBalance",
"appData",
"signature",
"protocolFees"
]
},
"OrderUID": {
"description": "Unique identifier for the order: 56 bytes encoded as hex with `0x`\nprefix.\n\nBytes 0 to 32 are the order digest, bytes 30 to 52 the owner address and\nbytes 52..56 valid to,",
"type": "string"
},
"PriceImprovement": {
"description": "A cut from the price improvement over the best quote is taken as a protocol fee.\n",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"priceImprovement"
]
},
"maxVolumeFactor": {
"description": "Never charge more than that percentage of the order volume.",
"type": "number"
},
"factor": {
"description": "The factor of the user surplus that the protocol will request from the solver after settling the order",
"type": "number"
},
"quote": {
"$ref": "#/$defs/Quote"
}
}
},
"Quote": {
"type": "object",
"properties": {
"sellAmount": {
"$ref": "#/$defs/TokenAmount"
},
"buyAmount": {
"$ref": "#/$defs/TokenAmount"
},
"fee": {
"$ref": "#/$defs/TokenAmount"
},
"solver": {
"$ref": "#/$defs/Address"
}
}
},
"SurplusFee": {
"description": "If the order receives more than limit price, pay the protocol a factor of the difference.\n",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"surplus"
]
},
"maxVolumeFactor": {
"description": "Never charge more than that percentage of the order volume.",
"type": "number"
},
"factor": {
"description": "The factor of the user surplus that the protocol will request from the solver after settling the order",
"type": "number"
}
}
},
"Token": {
"description": "Token information.",
"type": "object",
"properties": {
"address": {
"$ref": "#/$defs/Address"
},
"price": {
"nullable": true,
"allOf": [
{
"$ref": "#/$defs/TokenAmount"
}
],
"description": "The reference price denominated in native token (i.e. 1e18\nrepresents a token that\n\ntrades one to one with the native token). These prices are used for\nsolution competition\n\nfor computing surplus and converting fees to native token."
},
"trusted": {
"description": "Whether the protocol trusts the token to be used for internalizing\ntrades.\n\nSolvers are allowed to internalize trades, ie. omit the interaction\nthat executes the swap from token A to token B and instead use the\nsettlement contract balances, aka buffers, to fulfil the interaction\nas long as the token the contract receives (A in the example) is\ntrusted.",
"type": "boolean"
}
}
},
"TokenAmount": {
"description": "Amount of an ERC20 token. 256 bit unsigned integer in decimal notation.",
"type": "string"
},
"VolumeFee": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"volume"
]
},
"factor": {
"description": "The fraction of the order's volume that the protocol will request from the solver after settling the order.",
"type": "number"
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/cow-protocol-solve-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.