Skip to main content

Quickstart

This guide will get you up and running with Orquestra in just a few minutes. You’ll sign in, upload an IDL, and build your first transaction.
This quickstart assumes you’re using the hosted version of Orquestra. If you want to self-host, see the Installation guide.

Step 1: Sign in with GitHub

Orquestra uses GitHub OAuth for authentication.
1

Navigate to Orquestra

Go to the Orquestra dashboard (or http://localhost:5173 if running locally).
2

Click 'Sign in with GitHub'

You’ll be redirected to GitHub to authorize the application.
3

Authorize the app

Grant Orquestra access to your GitHub profile. This is used to create your account and manage your projects.
4

Return to dashboard

After authorization, you’ll be redirected back to Orquestra with an active session.

Step 2: Upload your first IDL

Now let’s upload a Solana Anchor IDL to generate REST APIs.
1

Prepare your IDL

You’ll need an Anchor IDL file (JSON format). If you don’t have one, you can use this example:
{
  "version": "0.1.0",
  "name": "counter",
  "instructions": [
    {
      "name": "initialize",
      "accounts": [
        {
          "name": "counter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "initialValue",
          "type": "u64"
        }
      ]
    },
    {
      "name": "increment",
      "accounts": [
        {
          "name": "counter",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": []
    }
  ],
  "accounts": [
    {
      "name": "Counter",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "count",
            "type": "u64"
          }
        ]
      }
    }
  ]
}
2

Navigate to Upload

Click Upload IDL in the dashboard.
3

Fill in project details

  • Project name: my-counter
  • Program ID: Your Solana program ID (e.g., 11111111111111111111111111111111)
  • IDL file: Select your IDL JSON file
  • Visibility: Choose public or private
4

Submit

Click Upload and wait for processing. Orquestra will:
  • Validate the IDL structure
  • Parse instructions and accounts
  • Generate REST endpoints
  • Create AI-optimized documentation
The IDL file can be up to 10 MB. For CPI documentation, you can upload an additional 5 MB Markdown file.

Step 3: Explore your API

Once uploaded, your project has auto-generated endpoints:
curl https://api.orquestra.dev/api/my-counter/instructions
Response:
{
  "instructions": [
    {
      "name": "initialize",
      "accounts": [...],
      "args": [...]
    },
    {
      "name": "increment",
      "accounts": [...],
      "args": []
    }
  ]
}

Step 4: Build a transaction

Now let’s build a transaction for the initialize instruction:
curl -X POST https://api.orquestra.dev/api/my-counter/instructions/initialize/build \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "accounts": {
      "counter": "COUNTER_PUBKEY_HERE",
      "user": "YOUR_WALLET_PUBKEY",
      "systemProgram": "11111111111111111111111111111111"
    },
    "args": {
      "initialValue": 0
    }
  }'
Response:
{
  "transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQADBa...",
  "accounts": [
    {
      "pubkey": "COUNTER_PUBKEY_HERE",
      "isSigner": false,
      "isWritable": true
    },
    ...
  ],
  "instructionData": "AfQvvPT8fBkAAAAAAAAAA==",
  "estimatedFee": 5000
}
The transaction field contains a base58-encoded transaction ready for signing with your wallet.

Step 5: Get AI-ready documentation

Orquestra automatically generates Markdown documentation optimized for AI agents:
curl https://api.orquestra.dev/api/my-counter/docs
This returns structured documentation including:
  • All instructions with parameters
  • Account schemas
  • Custom types and enums
  • Error codes
  • Usage examples
You can also view the documentation in your browser at /api/my-counter/docs.

Next steps

Upload IDL guide

Learn advanced IDL management techniques

Build transactions

Master transaction building with complex types

API keys

Create and manage API keys for programmatic access

API reference

Explore the complete REST API

Using with JavaScript/TypeScript

Here’s a complete example using JavaScript:
// 1. Upload IDL
const uploadResponse = await fetch('https://api.orquestra.dev/api/idl/upload', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${JWT_TOKEN}`
  },
  body: JSON.stringify({
    name: 'my-counter',
    programId: '11111111111111111111111111111111',
    idl: { /* IDL object */ },
    isPublic: true
  })
});

const { projectId } = await uploadResponse.json();

// 2. Build transaction
const buildResponse = await fetch(`https://api.orquestra.dev/api/${projectId}/instructions/initialize/build`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    accounts: {
      counter: counterPubkey,
      user: walletPubkey,
      systemProgram: SystemProgram.programId
    },
    args: {
      initialValue: 0
    }
  })
});

const { transaction } = await buildResponse.json();

// 3. Sign and send transaction
const tx = Transaction.from(Buffer.from(transaction, 'base64'));
const signature = await wallet.signAndSendTransaction(tx);
console.log('Transaction signature:', signature);
For more examples in different languages, see the API Reference.

Build docs developers (and LLMs) love