For the complete documentation index, see llms.txt. This page is also available as Markdown.

Turbine

Turbine API endpoints

Submit a new liquidity request to the system

post
Body

Represents a liquidity addition with SignatureTransfer permit functionality.

This struct encapsulates all necessary information needed to submit a new intent to add liquidity to the system, including the intent and SignatureTransfer permit data for approvals. User authentication is handled via session-based SIWE verification.

Fields

  • add_liquidity The intent to add liquidity
  • permit_tokens The batch SignatureTransfer permit and signature for token0 and token1
Responses
200

Liquidity intent successfully submitted

application/json

Response returned after successfully submitting a liquidity intent to the system. Contains the unique identifier assigned to the submitted intent.

Fields

  • hash - Unique identifier assigned to the liquidity intent
intentHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/add_liquidity

Submit a new order to the system

post
Body

Represents an order submission with optional permit functionality.

This struct encapsulates all necessary information needed to submit a new order to the system. signed_permit is required only for non-smart orders.

Responses
200

Order successfully submitted

application/json

Response returned after successfully submitting an order to the system. Contains the unique identifier assigned to the submitted order.

Fields

  • order_hash - Unique identifier assigned to the submitted order
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/add_order

Submit multiple orders to the system

post
Bodyobject · AddOrder[]

Represents an order submission with optional permit functionality.

This struct encapsulates all necessary information needed to submit a new order to the system. signed_permit is required only for non-smart orders.

Responses
200

Orders successfully submitted

application/json

Response returned after successfully submitting an order to the system. Contains the unique identifier assigned to the submitted order.

Fields

  • order_hash - Unique identifier assigned to the submitted order
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/add_orders

Remove an order from the system

post
Body
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
Responses
200

Order successfully queued for cancellation

application/json
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/cancel_order

Get the current config

get
Responses
200

Config retrieved successfully

application/json
lpHookAddressstring · addressRequiredExample: 0x1234567890123456789012345678901234567890
lpRouterAddressstring · addressRequiredExample: 0x1234567890123456789012345678901234567890
maxSignatureLifetimeSinteger · int64Required

Maximum allowed remaining validity of an EIP-712 auth signature, in seconds.

minLiquidityVolumeUsdcstring · uint256Required

Minimum total USDC volume for a liquidity provision intent, in native USDC units (6 decimals). A value of 10000000 is 10 USDC.

Example: 10000000
minTradeSizeUsdcstring · uint256Required

Minimum trade size in native USDC units (6 decimals). A value of 10000000 is 10 USDC.

Example: 10000000
poolManagerAddressstring · addressRequiredExample: 0x1234567890123456789012345678901234567890
siweDomainstringRequiredExample: dev-swap.propellerheads.xyz
siweUristringRequiredExample: https://dev-turbine.propellerheads.xyz/api
submitSettlementsbooleanRequired
turbineSettlerAddressstring · addressRequiredExample: 0x1234567890123456789012345678901234567890
turbineSignerAddressstring · addressRequiredExample: 0x1234567890123456789012345678901234567890
versionstringRequiredExample: 0.109.1
get/api/config
200

Config retrieved successfully

Submit an EIP-712 signed liquidity deposit intent

post
Body

EIP-712 request body: the semantic payload plus its auth block. The EIP-712 signature covers the payload's typed struct together with nonce and deadline.

Responses
200

Liquidity intent successfully submitted

application/json

Response returned after successfully submitting a liquidity intent to the system. Contains the unique identifier assigned to the submitted intent.

Fields

  • hash - Unique identifier assigned to the liquidity intent
intentHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/eip712/add_liquidity

Submit a single EIP-712 signed order

post
Body

EIP-712 request body: the semantic payload plus its auth block. The EIP-712 signature covers the payload's typed struct together with nonce and deadline.

Responses
200

Order successfully submitted

application/json

Response returned after successfully submitting an order to the system. Contains the unique identifier assigned to the submitted order.

Fields

  • order_hash - Unique identifier assigned to the submitted order
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/eip712/add_order

Submit multiple independently-signed orders

post
Bodyobject · Eip712RequestBody_AddOrderEip712[]

A batch of independently signed add-order requests.

Responses
200

Orders successfully submitted

application/json

Response returned after successfully submitting an order to the system. Contains the unique identifier assigned to the submitted order.

Fields

  • order_hash - Unique identifier assigned to the submitted order
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/eip712/add_orders

Cancel an order with an EIP-712 signed request

post
Body

EIP-712 request body: the semantic payload plus its auth block. The EIP-712 signature covers the payload's typed struct together with nonce and deadline.

Responses
200

Order successfully queued for cancellation

application/json
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/eip712/cancel_order

Query the signer's liquidity intents by hash

post
Body

EIP-712 request body: the semantic payload plus its auth block. The EIP-712 signature covers the payload's typed struct together with nonce and deadline.

Responses
200

Liquidity intent states owned by the recovered signer

application/json
hashstring · bytes32Required
intentobjectRequired
statusstring · enumRequiredPossible values:
post/api/eip712/liquidity_intents

Query the signer's orders

post
Body

EIP-712 request body: the semantic payload plus its auth block. The EIP-712 signature covers the payload's typed struct together with nonce and deadline.

Responses
200

Orders for the recovered signer

application/json

Response body for GET /api/orders.

cursorstring · nullableOptional

Opaque token to pass back as cursor in the next request. null on the last page.

hasMorebooleanRequired

Mirrors cursor.is_some().

post/api/eip712/orders

Submit an EIP-712 signed liquidity withdrawal intent

post
Body

EIP-712 request body: the semantic payload plus its auth block. The EIP-712 signature covers the payload's typed struct together with nonce and deadline.

Responses
200

Liquidity intent successfully submitted

application/json

Response returned after successfully submitting an intent to the system. Contains the unique identifier assigned to the submitted intent.

Fields

  • hash - Unique identifier assigned to the submitted intent
intentHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/eip712/remove_liquidity

Get statuses for multiple liquidity intents

post
Body
intentHashesstring · bytes32[]RequiredExample: ["0x1234567890123456789012345678901234567890123456789012345678901234"]
Responses
200

Liquidity intent states retrieved successfully

application/json
hashstring · bytes32Required
intentobjectRequired
statusstring · enumRequiredPossible values:
post/api/liquidity_intent_states

Logout and clear all sessions for the current user

post
Responses
200

Successfully logged out, all sessions cleared

No content

post/api/logout

No content

Get current user session information

get
Responses
200

User session information retrieved successfully

application/json
addressstring · addressRequired
authenticatedbooleanRequired
get/api/me

Generate a nonce for the SIWE flow.

post
Responses
200

Nonce generated successfully

text/plain
stringOptional
post/api/nonce
post
Body

The swap intent for a user

buyTokenstring · addressRequired

The token being bought

Example: 0xdAC17F958D2ee523a2206206994597C13D831ec7
callDatastring · bytesRequired

Optional call data for smart orders, allowing custom routing

Example: 0x
callDataTargetstring · addressRequired

The address of the target contract for the calldata

Example: 0x0000000000000000000000000000000000000000
calldataBuyAmountOffsetinteger · uint64Required

The offset of the buy amount in the calldata If Some, used to update the calldata with the actual buy amount

Example: 36
calldataSellAmountOffsetinteger · uint64Required

The offset of the sell amount in the calldata If Some, used to update the calldata with the actual sell amount

Example: 4
endTimeinteger · uint256Required

Block timestamp until when the order is valid.

Example: 1630003600
minBuyAmountstring · uint256Required

The minimum amount of tokens being bought, effectively defining limit price.

Example: 950
ownerstring · addressRequired

The address of the user submitting the order

Example: 0xBE69d72ca5f88aCba033a063dF5DBe43a4148De0
partialFillboolean · booleanRequired

Flag allowing partial fills

Example: true
saltstring · bytes32Required

The offset of the buy amount in the calldata Used to differentiate between orders with the same parameters

Example: 0xbc99a2cb0a86c1eb704c1b670ec4c59eae55ceaa8f1b0068f170d6d66d1301a1
sellAmountstring · uint196Required

The amount of tokens being sold

Example: 1000
sellTokenstring · addressRequired

The token being sold

Example: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
startTimeinteger · uint256Required

Block timestamp since when the order is valid

Example: 1630000000
Responses
200

Order fees retrieved successfully

text/plain
stringOptional
post/api/order_fees
get
Body
orderHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
Responses
200

Order state retrieved successfully

application/json
hashstring · bytes32Required
ownerstring · addressRequired
statusstring · enumRequiredPossible values:
get/api/order_state

Get states for multiple orders

post
Body
orderHashesstring · bytes32[]RequiredExample: ["0x1234567890123456789012345678901234567890123456789012345678901234"]
Responses
200

Order states retrieved successfully

application/json
hashstring · bytes32Required
ownerstring · addressRequired
statusstring · enumRequiredPossible values:
post/api/order_states

List orders for the authenticated user.

get

Returns active and terminal orders in a single time-sorted, cursor-paginated list. Each entry carries full display detail via orderDetails, regardless of status. Supports multi-value hash and status filters; when hash is provided, pagination is skipped.

Query parameters
hashstring · bytes32Optional

Direct lookup by order hash, comma-separated. Max 30 per request. When provided, pagination is skipped.

statusstringOptional

Filter by order status, comma-separated. Multiple values are OR'd.

cursorstringOptional

Opaque cursor from a previous response. Ignored when hash is provided.

limitinteger · int32Optional

Max orders per page (default 50, cap 200). Ignored when hash is provided.

Responses
200

Orders retrieved

application/json

Response body for GET /api/orders.

cursorstring · nullableOptional

Opaque token to pass back as cursor in the next request. null on the last page.

hasMorebooleanRequired

Mirrors cursor.is_some().

get/api/orders

Request a single-order quote from the Fynd solver.

post

Public, unauthenticated. Returns a trimmed view of the Fynd response (amounts + gas). Any non-success status or transport error is returned as a 502 with a descriptive message. If Quoting is disabled, 501 is returned.

Body

Minimal inputs for a Fynd passthrough quote.

buyTokenstring · addressRequiredExample: 0xdAC17F958D2ee523a2206206994597C13D831ec7
sellAmountstring · uint256RequiredExample: 1000000
sellTokenstring · addressRequiredExample: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Responses
200

Quote successful

application/json

Pared-down Fynd quote: amounts, gas, and a reference midprice.

ammSpreadHbpinteger · int64Required

DEX-derived spread in hundredths of a basis point. 10_000 hbp = 1%. Deprecated: use spread instead.

buyAmountstring · uint256Required
buyTokenstring · addressRequired
sellAmountstring · uint256Required
sellTokenstring · addressRequired
post/api/quote

Submit a new liquidity removal request to the system

post
Body

Represents a liquidity removal with SignatureTransfer permit functionality.

This struct encapsulates all necessary information needed to submit a new intent to remove liquidity to the system, including the intent and SignatureTransfer permit data for approvals. User authentication is handled via session-based SIWE verification.

Fields

  • remove_liquidity The intent to remove liquidity
  • permit_lp_token The SignatureTransfer permit and signature for the LP token
Responses
200

Liquidity intent successfully submitted

application/json

Response returned after successfully submitting an intent to the system. Contains the unique identifier assigned to the submitted intent.

Fields

  • hash - Unique identifier assigned to the submitted intent
intentHashstring · bytes32RequiredExample: 0x1234567890123456789012345678901234567890123456789012345678901234
post/api/remove_liquidity

Get the status of the Turbine service

get
Responses
200

Service is running

text/plain
stringOptional
get/api/status
200

Service is running

Verify a SIWE message and create/update the session.

post

Cycles the session id to prevent session fixation attacks.

Body
messagestringRequiredExample: app.turbine.exchange wants you to sign in with your Ethereum account: 0x1234567890123456789012345678901234567890 Sign-In With Ethereum statement URI: https://app.turbine.exchange Version: 1 Chain ID: 1 Nonce: abc123def456ghi789 Issued At: 2024-01-15T10:30:00Z
signaturestringRequiredExample: {"r":"0xc135e033b0fe93b22a0b94700963c9628123f6a8fe9b7ea5e5842e11362365ac","s":"0x7d65776eb91d15baf2d08a2739f0bee524529222262d481900761cad92c485ed","yParity":"0x0","v":"0x0"}
Responses
200

SIWE verification successful, session created

No content

post/api/verify

No content

Last updated

Was this helpful?