API v1 — Live

Developer API
Reference

Integrate compute token trading and USDC payments directly into your applications. Built on Solana — near-zero fees, sub-second settlement.

<400ms avg latency
🔗
Solana Mainnet
💵
USDC stablecoin
🔓
No API key required

Quick Start

Three calls to your first USDC payment. No SDK needed — plain HTTP.

1

Create a payment request

POST to /api/payments/solana/create with an amount. You'll get back a reference key and a url you can encode as a QR code.

curl
curl -X POST https://computevaultos.polsia.app/api/payments/solana/create \
  -H "Content-Type: application/json" \
  -d '{"amount": 9.99, "label": "H100 × 4hrs", "message": "Compute token purchase"}'
2

User pays with any Solana wallet

Display the url as a QR code or deep-link. Phantom, Solflare, and any Solana Pay–compatible wallet will parse it automatically. The user approves in <5 seconds.

response
{
  "success": true,
  "payment": {
    "paymentId":  "pay_a1b2c3d4",
    "reference":  "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs",
    "url":         "solana:...  ← encode as QR",
    "amount":     9.99,
    "status":     "pending"
  }
}
3

Verify on-chain and fulfill

Poll /api/payments/solana/:reference every 2 seconds. Once status is confirmed, the payment is finalized and you can release compute.

curl
curl https://computevaultos.polsia.app/api/payments/solana/3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs

Base URL

All endpoints are HTTPS. No versioning prefix — breaking changes are additive only.

Production https://computevaultos.polsia.app BASE_URL
ℹ️
No API key required for public read endpoints (token prices, payment status). Payment creation endpoints are open during beta. Rate limits apply: 60 requests/minute per IP.

Token Prices

Live spot prices for tokenized GPU compute, denominated in USDC per GPU-hour.

Asset Symbol Price / hr Description
NVIDIA H100 SXM5 H100 $2.50 80GB HBM3, highest throughput
NVIDIA A100 A100 $1.20 40GB / 80GB HBM2e
NVIDIA V100 V100 $0.45 16GB / 32GB HBM2
NVIDIA RTX 4090 RTX4090 $0.85 24GB GDDR6X, consumer
AMD EPYC 9654 EPYC $0.15 96-core CPU, 384GB RAM
📈
Prices are determined by open market order flow — bid/ask spreads are visible on the market page. A real-time WebSocket price feed is on the roadmap for Q2 2026.

Payments API

USDC payments on Solana via the Solana Pay protocol. Wallets scan a QR or deep-link and approve in their native app.

POST /api/payments/solana/create Generate a payment request

Creates a new USDC payment request. Returns a Solana Pay URL and a reference key you use to track status. Single payments are capped at 10,000 USDC.

Request Body (JSON)
FieldTypeRequiredDescription
amount number required USDC amount. Must be positive. Max 10,000.
label string optional Short label shown in the wallet UI (e.g. "H100 × 4hrs").
message string optional Human-readable description of the payment.
memo string optional On-chain memo string. Max 32 characters.
userId string optional Your internal user ID — stored for reconciliation.
metadata object optional Arbitrary JSON. Useful for order IDs, product SKUs, etc.
Code Examples
bash
curl -X POST https://computevaultos.polsia.app/api/payments/solana/create \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25.00,
    "label": "H100 × 10hrs",
    "message": "Compute token purchase",
    "memo": "order_8827",
    "userId": "usr_abc123",
    "metadata": { "asset": "H100", "hours": 10 }
  }'
javascript
const response = await fetch('https://computevaultos.polsia.app/api/payments/solana/create', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    amount: 25.00,
    label: 'H100 × 10hrs',
    message: 'Compute token purchase',
    memo: 'order_8827',
    userId: 'usr_abc123',
    metadata: { asset: 'H100', hours: 10 }
  })
});

const { payment } = await response.json();
console.log(payment.reference); // base58 key to track this payment
console.log(payment.url);       // encode as QR or use as deep-link
python
import requests

resp = requests.post(
    "https://computevaultos.polsia.app/api/payments/solana/create",
    json={
        "amount":  25.00,
        "label":   "H100 × 10hrs",
        "message": "Compute token purchase",
        "memo":    "order_8827",
        "userId":  "usr_abc123",
        "metadata": {"asset": "H100", "hours": 10}
    }
)

payment = resp.json()["payment"]
print(payment["reference"])  # base58 key
print(payment["url"])        # Solana Pay URL
Response
201 Created
json
{
  "success":  true,
  "payment":  {
    "paymentId":           "pay_a1b2c3d4e5f6",
    "reference":           "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs",
    "url":                 "solana:9xKXF...?amount=25&spl-token=Gh9Z...&reference=3FZb...&label=H100+%C3%974hrs",
    "amount":              25.00,
    "status":              "pending",
    "expiresAt":           "2026-04-03T01:34:34Z",
    "createdAt":           "2026-04-03T01:04:34Z"
  }
}
POST /api/payments/solana/verify Trigger on-chain verification

Queries the Solana blockchain for a transaction matching this payment's reference. Validates amount, recipient, and token. Updates payment status in the database. Call this once the user reports they've sent payment, or on a short poll.

Request Body (JSON)
FieldTypeRequiredDescription
reference string required Base58 reference key from the /create response.
Status Values
StatusMeaning
pending Transaction not yet found on-chain. Keep polling.
confirmed Transfer validated — amount, recipient, and token all match. Safe to release compute.
expired Payment window elapsed without a matching transaction.
failed Transaction found but validation failed (wrong amount, wrong token, etc.).
Code Examples
bash
curl -X POST https://computevaultos.polsia.app/api/payments/solana/verify \
  -H "Content-Type: application/json" \
  -d '{"reference": "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs"}'
javascript
// Poll until confirmed or expired
async function waitForPayment(reference) {
  let attempts = 0;
  while (attempts < 60) {
    const res = await fetch(
      `https://computevaultos.polsia.app/api/payments/solana/${reference}`
    );
    const { payment } = await res.json();

    if (payment.status === 'confirmed') return payment;
    if (payment.status === 'expired') throw new Error('Payment expired');

    await new Promise(r => setTimeout(r, 2000)); // wait 2s
    attempts++;
  }
  throw new Error('Timed out waiting for payment');
}
python
import requests, time

def verify_payment(reference):
    resp = requests.post(
        "https://computevaultos.polsia.app/api/payments/solana/verify",
        json={"reference": reference}
    )
    return resp.json()["payment"]

# Poll until confirmed
for _ in range(60):
    payment = verify_payment(reference)
    if payment["status"] == "confirmed":
        print("✓ Payment confirmed!", payment["transactionSignature"])
        break
    print(f"Status: {payment['status']}")
    time.sleep(2)
Response
200 OK
json
{
  "success":  true,
  "payment":  {
    "paymentId":              "pay_a1b2c3d4e5f6",
    "reference":              "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs",
    "status":                  "confirmed",
    "transactionSignature":    "5KtPn1LGuxhFiwjxErkxTbfC...",
    "amount":                  25.00,
    "confirmedAt":             "2026-04-03T01:06:01Z"
  }
}
GET /api/payments/solana/:reference Lightweight DB-only status check

Returns the current status of a payment from the database — does not re-query the blockchain. Use this for fast client-side polling. Use /verify to trigger an on-chain check.

Path Parameters
ParameterTypeDescription
reference string Base58 reference key from the /create response.
Code Examples
bash
curl https://computevaultos.polsia.app/api/payments/solana/3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs
javascript
const ref = '3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs';
const res = await fetch(`https://computevaultos.polsia.app/api/payments/solana/${ref}`);
const { payment } = await res.json();
console.log(payment.status); // "pending" | "confirmed" | "expired" | "failed"
python
import requests

ref = "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs"
resp = requests.get(
    f"https://computevaultos.polsia.app/api/payments/solana/{ref}"
)
print(resp.json()["payment"]["status"])
Response
200 OK
json
{
  "success":  true,
  "payment":  {
    "paymentId":   "pay_a1b2c3d4e5f6",
    "reference":   "3FZbgi29cpjq2GjdwV8eyHuJJnkLtktZc5ms1Vt3Nwhs",
    "status":      "confirmed",
    "amount":      25.00,
    "createdAt":   "2026-04-03T01:04:34Z",
    "confirmedAt": "2026-04-03T01:06:01Z"
  }
}

Error Codes

All errors return success: false with a human-readable message.

HTTP Status When it occurs Example message
400 Invalid request params (missing amount, bad reference format, memo too long) "amount is required and must be a positive number"
404 Payment reference not found in the database "Payment not found"
503 Payment service not configured (missing SOLANA_RECIPIENT env var) "Payment service not configured. Contact support."
500 Unexpected server error "Failed to create payment request"