Skip to main content

List Protocols

List all available protocol adapters.
cURL
curl -H "x-api-key: dev-api-key" \
     http://localhost:3000/api/v1/protocols

Response

{
  "status": "success",
  "data": {
    "protocols": [
      {
        "protocol": "system-program",
        "version": "1.0.0",
        "capabilities": ["transfer_sol", "create_account"],
        "programIds": ["11111111111111111111111111111111"]
      },
      {
        "protocol": "jupiter",
        "version": "1.0.0",
        "capabilities": ["swap", "quote"],
        "programIds": ["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"]
      }
    ]
  }
}

Get Protocol Capabilities

Retrieve capabilities for a specific protocol.
cURL
curl -H "x-api-key: dev-api-key" \
     http://localhost:3000/api/v1/protocols/jupiter/capabilities

Path Parameters

protocol
string
required
Protocol name: system-program, spl-token, jupiter, marinade, solend, metaplex, orca, raydium, escrow

Response

protocol
string
required
Protocol name
version
string
required
Protocol adapter version
capabilities
array
required
Array of supported operations
programIds
array
required
Array of on-chain program IDs

Get Protocol Version

Get protocol adapter version.
cURL
curl -H "x-api-key: dev-api-key" \
     http://localhost:3000/api/v1/protocols/jupiter/version

Protocol Health

Check health of all protocol adapters.
cURL
curl -H "x-api-key: dev-api-key" \
     http://localhost:3000/api/v1/protocols/health

Get Specific Protocol Health

cURL
curl -H "x-api-key: dev-api-key" \
     http://localhost:3000/api/v1/protocols/escrow/health

Response

{
  "status": "success",
  "data": {
    "protocol": "escrow",
    "ok": true,
    "configured": true,
    "deployed": true,
    "programId": "EscrowProgramId1111111111111111111111111111"
  }
}

Compatibility Check

Check if a protocol supports a specific intent.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "swap",
    "intent": {
      "inputMint": "So11111111111111111111111111111111111111112",
      "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
    }
  }' \
  http://localhost:3000/api/v1/protocols/jupiter/compatibility-check

Migrate Intent

Migrate an intent from one protocol version to another.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "intent": {...},
    "targetVersion": "2.0.0"
  }' \
  http://localhost:3000/api/v1/protocols/jupiter/migrate-intent

DeFi Operations

Get Quote

Get a swap quote from a DEX protocol.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "jupiter",
    "inputMint": "So11111111111111111111111111111111111111112",
    "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "1000000",
    "wallet": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "slippageBps": 50
  }' \
  http://localhost:3000/api/v1/defi/quote

Request Body

protocol
string
required
DEX protocol: jupiter, orca, raydium
inputMint
string
required
Input token mint address
outputMint
string
required
Output token mint address
amount
string
required
Input amount (in token base units)
wallet
string
required
Wallet public key
slippageBps
number
Slippage tolerance in basis points (default: 50)

Swap

Execute a token swap.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "jupiter",
    "inputMint": "So11111111111111111111111111111111111111112",
    "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "1000000",
    "wallet": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "slippageBps": 50
  }' \
  http://localhost:3000/api/v1/defi/swap
This is a convenience endpoint. For full transaction control, use POST /api/v1/transactions with type: "swap".

Stake

Stake SOL with a staking protocol.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "marinade",
    "wallet": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "amount": "1000000000",
    "validator": "optional-validator-address"
  }' \
  http://localhost:3000/api/v1/defi/stake

Request Body

protocol
string
required
Staking protocol: marinade, solend
wallet
string
required
Wallet public key
amount
string
required
Amount to stake in lamports
validator
string
Specific validator address (optional)

Unstake

Unstake SOL from a staking protocol.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "marinade",
    "wallet": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "amount": "1000000000"
  }' \
  http://localhost:3000/api/v1/defi/unstake

Lend - Supply

Supply tokens to a lending protocol.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "solend",
    "wallet": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "mint": "So11111111111111111111111111111111111111112",
    "amount": "1000000000"
  }' \
  http://localhost:3000/api/v1/defi/lend/supply

Request Body

protocol
string
required
Lending protocol: solend
wallet
string
required
Wallet public key
mint
string
required
Token mint address to supply
amount
string
required
Amount to supply (in token base units)

Lend - Borrow

Borrow tokens from a lending protocol.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "solend",
    "wallet": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "1000000"
  }' \
  http://localhost:3000/api/v1/defi/lend/borrow

Escrow Operations

Create Escrow

Create a new escrow account.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "escrowNumericId": "900001",
    "counterparty": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "creator": "8yMLvVhYW0YrHZaN4Kx9xWIHK7S5tO3hqW0nQ4mM6fYz",
    "arbiter": "9zNMvWhZW1ZsIZbO5Ly0yXJHL8T6tP4irX1oR5nN7gZa",
    "feeRecipient": "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVv",
    "amount": "10000000",
    "deadlineUnixSec": 4102444800,
    "terms": "Payment for services rendered"
  }' \
  http://localhost:3000/api/v1/escrow/create

Request Body

escrowNumericId
string
required
Unique numeric escrow identifier
counterparty
string
required
Recipient wallet address
creator
string
required
Creator wallet address
arbiter
string
required
Arbiter wallet address for dispute resolution
feeRecipient
string
required
Fee recipient wallet address
amount
string
required
Escrow amount in lamports
deadlineUnixSec
number
required
Escrow deadline (Unix timestamp)
terms
string
Escrow terms description

Accept Escrow

Accept an existing escrow.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "escrowNumericId": "900001",
    "creator": "8yMLvVhYW0YrHZaN4Kx9xWIHK7S5tO3hqW0nQ4mM6fYz"
  }' \
  http://localhost:3000/api/v1/escrow/900001/accept

Path Parameters

id
string
required
Escrow numeric ID

Release Escrow

Release funds to counterparty.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "escrowNumericId": "900001",
    "creator": "8yMLvVhYW0YrHZaN4Kx9xWIHK7S5tO3hqW0nQ4mM6fYz",
    "counterparty": "7xKLvUhXW9XqHZzN3Jw8wVHGK6R4tN2gqV9mP3kL5eXy",
    "feeRecipient": "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVv"
  }' \
  http://localhost:3000/api/v1/escrow/900001/release

Refund Escrow

Refund funds to creator.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "escrowNumericId": "900001",
    "creator": "8yMLvVhYW0YrHZaN4Kx9xWIHK7S5tO3hqW0nQ4mM6fYz"
  }' \
  http://localhost:3000/api/v1/escrow/900001/refund

Dispute Escrow

Raise a dispute.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "escrowNumericId": "900001",
    "creator": "8yMLvVhYW0YrHZaN4Kx9xWIHK7S5tO3hqW0nQ4mM6fYz"
  }' \
  http://localhost:3000/api/v1/escrow/900001/dispute

Resolve Dispute

Arbiter resolves a dispute.
cURL
curl -X POST \
  -H "x-api-key: dev-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "escrowNumericId": "900001",
    "creator": "8yMLvVhYW0YrHZaN4Kx9xWIHK7S5tO3hqW0nQ4mM6fYz",
    "winnerIsCreator": false
  }' \
  http://localhost:3000/api/v1/escrow/900001/resolve

Supported Protocols

Protocol: system-programCapabilities:
  • transfer_sol - Transfer SOL between accounts
  • create_account - Create new accounts
Program ID: 11111111111111111111111111111111

Build docs developers (and LLMs) love