Skip to Content
Getting Started

Getting started

The fastest path is to hand this page to your agent. If you’d rather drive the API yourself, the manual path follows — five steps from code to results.

Open access. Any wallet can authenticate and fund an account — request a challenge, sign it, verify, then top up with USDC via x402 or MPP. API keys are issued on request via the waitlist.

Path 0: Tell your agent

Paste this into Claude Code, Cursor, or any capable coding agent:

Fetch https://computalot.com/skill.md and follow it to set up Computalot (on-demand GPU/CPU compute). Then use it to <describe your workload> and report the results.

The skill walks the agent through authentication, checking and funding the balance, submitting jobs, and reading results. You review what comes back; Pricing explains what it costs before anything runs.


The manual path: run your own code

Create a sandboxed project, upload your code, and submit typed jobs.

Prerequisites

export BASE_URL="https://computalot.com" export TOKEN="flk_..." # API key or wallet session token

If you don’t have a token yet, see Authentication for the access model and waitlist path. Before your first submission, check GET /api/v1/account/balance so you know what the account can spend — Billing covers holds, the ledger, and funding quotes.

Step 1: Create a project

curl -sS "$BASE_URL/api/v1/projects" \ -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "my-project", "remote_dir": "/root/my-project" }'

Step 2: Write your code

Your project needs a Dockerfile (defines the runtime), a computalot.project.json manifest, and your code. See Projects for the full setup guide.

# job.py import json, os payload = json.load(open(os.environ["COMPUTALOT_TASK_PAYLOAD"])) print(f"Processing: {payload}") result = {"status": "ok", "input": payload} json.dump(result, open(os.environ["COMPUTALOT_TASK_RESULT"], "w"))

Step 3: Upload your project

tar czf code.tar.gz Dockerfile computalot.project.json job.py curl -sS "$BASE_URL/api/v1/projects/my-project/push" \ -X POST \ -H "Authorization: Bearer $TOKEN" \ --data-binary @code.tar.gz

After a successful push, the latest revision is published immediately. You can submit jobs right away; the first one may take longer while Computalot prepares runtime capacity on demand.

Optional: if you want to prepare currently available workers ahead of time, call init manually:

curl -sS "$BASE_URL/api/v1/projects/my-project/init" \ -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{}'

If project init returns 402 Payment Required with a shortfall quote, fund the account and retry the same POST /api/v1/projects/my-project/init request.

Step 4: Submit a job

curl -sS "$BASE_URL/api/v1/jobs" \ -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "type": "structured_runner", "runner_command": ["python3", "job.py"], "payload": {"test": true}, "project": "my-project", "timeout_s": 120 }'

If job submit returns 402 Payment Required with a shortfall quote, fund the account and retry the same submit request.

Check GET /api/v1/projects/my-project/status if you want to inspect whether the revision is merely published (can_accept_new_jobs: true, ready_for_jobs: false) or already warm (ready_for_jobs: true).

Step 5: Read results

curl -sS "$BASE_URL/api/v1/results/<job_id>" \ -H "Authorization: Bearer $TOKEN"

What things cost

Every submit response includes summary.billing_estimate — the authoritative quote for that job — and unused hold is released at settlement. Indicative rates and worked examples live on Pricing.

💡

Found a bug or have an idea? POST /api/v1/feedback — no auth required. Types: bug, feature_request, provisioning, job_type_request.

Last updated on