FAQ & Support
How do I get access?
Self-serve with any wallet: request a challenge, sign it, verify for a session token, and top up with USDC via x402 or MPP. Prefer an API key? Join the waitlist on the landing page and we’ll 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 community channel are being set up and will be listed here.
What does it cost?
Metered market rates per task-second — indicative ranges, worked examples, and the hold/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
- Check the job:
GET /api/v1/jobs/:id— look aterrorandrecommended_action - Check tasks:
GET /api/v1/jobs/:id/tasks— per-taskerror,output,exit_code,latest_progress - Check project:
GET /api/v1/projects/:name/status - Check 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 below $5 | Top up, then retry POST /api/v1/projects/:name/init |
Tasks stuck in queued | Cold start or capacity catch-up | Check project status and job diagnostics; the first job can wait while runtime preparation happens on demand |
| Tasks fail immediately | Dockerfile missing deps or runtime issue | Fix Dockerfile or manifest, push a new revision, then retry with a small smoke job or optional /init |
| Useless error message | Truncated output | Check 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 are queryable for 30 days. Artifacts remain 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 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.
- Breaking changes are announced on Recent Changes (also mirrored in the JSON index
recent_changes). During beta they can ship on short notice, but retired endpoints fail explicitly — for example the removed direct/multipart artifact uploads return410 Gonewith migration guidance in the body — rather than silently disappearing. - Reserved fields (
result_quality,result_warnings,result_schema,callback_url) are documented as reserved and are validated as such (422on non-empty values) until they ship.