Compute is an API call away.
A consistent interface to fragmented compute. Built for developers and constrained agents.
Market pulseLoading observations
import { Exaflop } from './exaflop-client';
const exaflop = new Exaflop({
baseUrl: 'https://your-exaflop-domain',
apiKey: process.env.EXAFLOP_API_KEY!
});
const { offers } = await exaflop.offers({
hardware: 'H100', quantity: 8,
durationHours: 10, strategy: 'cheapest'
});
const quote = await exaflop.quote({
offerId: offers[0].id, durationHours: 10, disk: 20
});
// Review the quote and explicitly authorize provider billing.
const job = await exaflop.createJob({
quoteId: quote.id, confirmed: true,
workload: { image: 'nvidia/cuda:12.6.3-runtime-ubuntu24.04',
command: 'nvidia-smi', disk: 20, env: {} }
});Autonomy.
With boundaries.
API keys inherit your wallet identity. Job launches require an enabled policy, explicit confirmation, operator authorization and a fresh quote.
- Maximum cost per job and per day
- GPU, provider and regional allowlists
- Maximum authorized duration
- Atomic budget reservations
- Hashed, revocable API keys
Write authentication: Authorization: Bearer exf_… · 60 requests/min/key. Never expose API keys in browser bundles.
Developer keys
API reference
JSON / HTTPS| METHOD | ENDPOINT | DESCRIPTION |
|---|---|---|
| GET | /api/my/offers | Your wallet’s private connected-provider offers |
| GET / POST | /api/connections | Wallet session only: list or connect provider keys |
| DELETE | /api/connections/:id | Disconnect after active rentals finish |
| GET | /api/markets | Normalized market observations |
| GET | /api/hardware | Hardware reference catalog |
| GET | /api/providers | Provider connection status |
| GET | /api/offers | Ranked offers; hardware, quantity, durationHours, strategy filters |
| POST | /api/search | Deterministic natural-language search |
| GET | /api/history | Persisted price observations |
| GET | /api/index | Informational hardware price indices |
| POST | /api/quotes | Request a quote with offerId, durationHours and disk |
| GET | /api/quotes/:id | Read an owned quote |
| POST | /api/jobs | Explicitly confirmed launch; quoteId and workload |
| GET | /api/jobs/:id | Owned job state and supported telemetry |
| POST | /api/jobs/:id/stop | Terminate the provider instance |
| GET | /api/jobs/:id/logs | Provider logs, or explicit unavailability |
| GET | /api/jobs/:id/receipt | Canonical receipt for an ended job |
| GET | /api/events | Authenticated job and alert events |
Errors & idempotency
400 invalid input · 401 authentication required · 403 policy denied · 409 stale quote · 429 rate limit · 503 dependency unavailable. Quotes are consumed at most once. Ambiguous provider outcomes require reconciliation; do not blindly repeat a launch.
Event delivery
Poll GET /api/events or register a signed webhook above. Delivery retries up to five times and is at least once; deduplicate event IDs. Configure the server scheduler and encryption key first.