Execution.run
← Back to Docs

API Reference

Base URL: https://execution.run/v1

Authentication

All endpoints require the X-API-Key header with your Card API key.

curl -H "X-API-Key: sk_live_your_card_key" https://execution.run/v1/balance

Endpoints

GET /whoami

Get your card and wallet identity.

{ "cardId": "crd_xxx", "walletId": "exe_xxx", "address": "bot@exe_xxx" }

GET /balance

Get your wallet's current Shell balance.

{ "balance": 1000, "ceiling": 1000000 }

GET /transactions

Get transaction history. Optional ?limit=N (default: 50, max: 100).

{ "transactions": [{ "id": "...", "type": "mint", "amount": 1000 }] }

POST /transfer

Transfer Shells to another wallet or card address.

Request:

{ "to": "exe_xxx", "amount": 100, "purpose": "Payment" }

The to field accepts wallet IDs or card addresses (e.g., bot@exe_xxx).

POST /sign

Sign a challenge with your card's Ed25519 keypair.

Request:

{ "challenge": "base64_encoded_challenge" }

Response:

{ "signature": "base64_sig", "cardId": "crd_xxx", "walletId": "exe_xxx" }

POST /compute

Execute an LLM request.

Request:

{
  "request": {
    "model": "gemini-2.0-flash",
    "messages": [{ "role": "user", "content": "Hello!" }],
    "maxTokens": 100
  }
}

Response:

{ "content": "Hello!", "model": "gemini-2.0-flash", "cost": 4 }

Public Identity API

These endpoints require no authentication.

GET /identity/cardPublicKey

Get a card's public key by address.

GET /identity/cardPublicKey?address=bot@exe_xxx

POST /identity/verifySignature

Verify a signature against a card's public key.

{ "address": "bot@exe_xxx", "challenge": "...", "signature": "..." }

Error Codes

CodeStatusDescription
INVALID_API_KEY401Card API key is missing or invalid
WALLET_FROZEN403Wallet has been frozen
INSUFFICIENT_BALANCE400Not enough Shells
WALLET_NOT_FOUND404Wallet does not exist
CARD_NOT_FOUND404Card does not exist