curl --request POST \
--url https://api.velora.xyz/ft/p2p/{chainId}/ \
--header 'Content-Type: application/json' \
--data '
{
"nonceAndMeta": "0",
"expiry": 1735689600,
"makerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"takerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerAmount": "1000000000000000000",
"takerAmount": "1000000000000000000",
"maker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"taker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"signature": "0x…",
"permitMakerAsset": "<string>"
}
'{
"orderHash": "<string>",
"chainId": 1,
"nonceAndMeta": "<string>",
"expiry": 123,
"maker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"taker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"takerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerAmount": "1000000000000000000",
"takerAmount": "1000000000000000000",
"signature": "<string>",
"permitMakerAsset": "<string>",
"takerFromMeta": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerBalance": "1000000000000000000",
"fillableBalance": "1000000000000000000",
"reservedBalance": "1000000000000000000",
"swappableBalance": "1000000000000000000",
"transactionHash": "<string>",
"createdAt": 123,
"updatedAt": 123
}POST /ft/p2p/:chainId
Post a maker-signed AugustusRFQ order. The server validates the EIP-712 signature, stores the order, and returns it with its orderHash.
curl --request POST \
--url https://api.velora.xyz/ft/p2p/{chainId}/ \
--header 'Content-Type: application/json' \
--data '
{
"nonceAndMeta": "0",
"expiry": 1735689600,
"makerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"takerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerAmount": "1000000000000000000",
"takerAmount": "1000000000000000000",
"maker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"taker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"signature": "0x…",
"permitMakerAsset": "<string>"
}
'{
"orderHash": "<string>",
"chainId": 1,
"nonceAndMeta": "<string>",
"expiry": 123,
"maker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"taker": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"takerAsset": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerAmount": "1000000000000000000",
"takerAmount": "1000000000000000000",
"signature": "<string>",
"permitMakerAsset": "<string>",
"takerFromMeta": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"makerBalance": "1000000000000000000",
"fillableBalance": "1000000000000000000",
"reservedBalance": "1000000000000000000",
"swappableBalance": "1000000000000000000",
"transactionHash": "<string>",
"createdAt": 123,
"updatedAt": 123
}signature here, all without sending a transaction or paying gas. The server verifies the signature against the AugustusRFQ verifyingContract, stores the order, and returns it with an orderHash and an initial state.
taker field is what makes an order OTC. Set it to the intended counterparty’s address and only that address can fill the order (type P2P). The EIP-712 domain is name: "AUGUSTUS RFQ", version: "1", the order’s chainId, and verifyingContract set to the AugustusRFQ address for that chain.GET /ft/fillablebalance/:chainId/:account first: if makerAmount exceeds the maker’s balance or AugustusRFQ allowance, the order is accepted but lands in SUSPENDED. To skip a separate approve transaction, encode permitMakerAsset.
Related pages
OTC overview
GET /ft/order/:orderHash
SDK → OTC
sdk.otcOrders.submitOTCOrder wraps build → sign → post.Troubleshooting
Path Parameters
EVM chain ID the order settles on. Must match the chainId in the signed EIP-712 domain.
EVM chain ID. AugustusRFQ is deployed on 1 (Mainnet), 10 (Optimism), 56 (BSC), 137 (Polygon), 8453 (Base), 42161 (Arbitrum), 43114 (Avalanche), and 100 (Gnosis). See /resources/chains-and-contracts for per-chain addresses.
1
Body
A maker-signed order, posted as-is. The signed fields plus the maker's signature.
uint256 packing the maker in the upper 160 bits and a per-maker nonce in the lower 96 bits.
"0"
Unix timestamp (seconds) after which the order can no longer be filled.
1735689600
Token the maker is selling. Must be an ERC-20 (wrap native ETH first).
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
Token the maker wants in return.
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
Amount of makerAsset offered, in raw units.
"1000000000000000000"
Amount of takerAsset requested, in raw units.
"1000000000000000000"
The maker's wallet address — the order's signer.
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
The named counterparty. Set to a specific address for an OTC (P2P) order; the zero address makes it open.
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
EIP-712 signature over the order. Domain: name: "AUGUSTUS RFQ", version: "1", chainId, verifyingContract: <AugustusRFQ>.
"0x…"
Optional encoded permit for makerAsset, to skip a separate approve transaction.
Response
Order accepted and stored.
A stored order as returned by the API, including server-tracked balances and state.
The order's EIP-712 hash — its unique identifier.
EVM chain ID. AugustusRFQ is deployed on 1 (Mainnet), 10 (Optimism), 56 (BSC), 137 (Polygon), 8453 (Base), 42161 (Arbitrum), 43114 (Avalanche), and 100 (Gnosis). See /resources/chains-and-contracts for per-chain addresses.
1
EVM address (20 bytes, hex-encoded with 0x prefix).
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
EVM address (20 bytes, hex-encoded with 0x prefix).
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
EVM address (20 bytes, hex-encoded with 0x prefix).
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
EVM address (20 bytes, hex-encoded with 0x prefix).
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
Token amount in raw units / wei (no decimal point). Serialized as a string to preserve precision beyond JavaScript Number range.
"1000000000000000000"
Token amount in raw units / wei (no decimal point). Serialized as a string to preserve precision beyond JavaScript Number range.
"1000000000000000000"
Lifecycle state. SUSPENDED means the maker's balance or allowance dropped below the order. FULFILLED means fully filled.
DRAFT, PENDING, FULFILLED, CANCELLED, SUSPENDED, EXPIRED P2P is a counterparty-restricted OTC order (a named taker). LIMIT is an open AugustusRFQ order. The OTC API surface is P2P.
P2P, LIMIT Intended receiver decoded from nonceAndMeta.
^0x[a-fA-F0-9]{40}$"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
Min of the maker's balance, allowance, and balance backing this order.
"1000000000000000000"
Remaining unfilled makerAmount.
"1000000000000000000"
Amount currently reserved by this order.
"1000000000000000000"
Amount available to fill right now.
"1000000000000000000"
Fill or cancellation transaction hash, once settled on-chain.
Unix timestamp the order was created.
Unix timestamp the order was last updated.
Was this page helpful?