FAQ & Support
How do I get access?
Self-serve with any wallet: request a challenge, sign it, and verify for a session token. Then top up with USDC through x402 or MPP. Do you prefer an API key? Join the waitlist on the landing page, and we will issue one.
How do I reach a human?
- In-band (works today, no auth):
POST /api/v1/feedbackwith{"type": "bug" | "feature_request" | "provisioning" | "job_type_request", "title": "...", "description": "..."}. We triage every entry. - A support email and a community channel are in preparation. We will list them here.
What does it cost?
Computalot meters each task per second at the live market rate plus a 35% service markup. The minimum billed time per task-attempt is 60 seconds. Indicative ranges, worked examples, and the hold and settle model are on Pricing. The summary.billing_estimate in your submit response is the authoritative quote.
How do I give my agent access?
Tell your agent to install the Computalot skill from https://computalot.com/skill.md, or have it read https://computalot.com/llms.txt. See Agent Integration.
Debugging failed jobs
- Read the job:
GET /api/v1/jobs/:id— look aterrorandrecommended_action - Read the tasks:
GET /api/v1/jobs/:id/tasks— per-taskerror,output,exit_code,latest_progress - Read the project:
GET /api/v1/projects/:name/status - Read the billing truth:
GET /api/v1/account/balance,GET /api/v1/account/holds,GET /api/v1/account/ledger, andGET /api/v1/account/quotes
| Symptom | Likely cause | Fix |
|---|---|---|
402 Payment Required | Insufficient credits | Pay the returned shortfall quote (x402 or MPP) or top up. Then retry the same blocked request |
| Project init rejected | Balance less than $5 | Top up, then retry POST /api/v1/projects/:name/init |
Tasks stuck in queued | Cold start or capacity catch-up | Read the project status and job diagnostics. The first job can wait while runtime preparation happens on demand |
| Tasks fail immediately | The Dockerfile misses dependencies, or a runtime error | Correct the Dockerfile or manifest. Push a new revision. Then retry with a small smoke job or an optional /init |
| Useless error message | Truncated output | Read the per-task output field (full 10 KB) |
Submit rejected with 422 | Contract mismatch | The error body names the field and the fix. See the recommended_action |
Poll for job completion
while true; do
STATUS=$(curl -sS -H "Authorization: Bearer $TOKEN" \
https://computalot.com/api/v1/jobs/<job_id> \
| python3 -c "import sys,json; print(json.load(sys.stdin)['status'])")
case $STATUS in
completed|partial|failed|cancelled) break ;;
esac
sleep 5
doneCancel a job
curl -sS -X PUT -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://computalot.com/api/v1/jobs/<job_id>/cancel \
-d '{"reason":"no longer needed"}'How long are results kept?
Terminal jobs and their results stay queryable for 30 days. Artifacts stay retained and quota-accounted until you delete them. Deletion is refused only while a non-terminal job references the artifact. After deletion, historical job artifact links return not found.
What languages are supported?
Python, Node.js, Deno, Bun, Ruby, Julia, R, Rust (cargo), and any language that you install in your Dockerfile. Shell scripts as the direct entry point are blocked. Use a supported language wrapper.
API stability & deprecation
- All product endpoints live under
/api/v1. Machine-readable contracts:/openapi.jsonand/api/v1/docs. - Additive changes (new endpoints, new response fields) ship without notice. Write clients that tolerate unknown fields.
- We announce breaking changes on Recent Changes (also mirrored in the JSON index
recent_changes). During beta they can ship on short notice. Retired endpoints fail explicitly rather than disappear silently. For example, the removed direct and multipart artifact uploads return410 Gonewith migration guidance in the body. - Reserved fields stay non-authoritative.
result_qualityandresult_warningsare response placeholders. The API accepts and ignores object-shapedresult_schemametadata for compatibility (non-object values return422). Non-emptycallback_urlvalues return422until callbacks ship.