Developer API / docs
Quickstart
Create a key, send a job, download the result. Three requests end to end.
Base URL and auth
Every request carries your API key as a bearer token. Keys come from the dashboard after a free signup. The free plan gives 1,000 tasks a month.
https://api.gigai.tools/v1
Authorization: Bearer gk_live_...The catalog needs no key - curl https://api.gigai.tools/v1/tools answers right now.
1. Create a job
A job is a set of named tasks. This one needs no input file: it generates a QR code and exports a download link.
request
curl -X POST https://api.gigai.tools/v1/jobs \
-H "Authorization: Bearer $GIGAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tasks": {
"qr": { "operation": "generate-qr", "text": "https://example.com" },
"out": { "operation": "export/url", "input": ["qr"] }
}
}'The answer is the job with its id and every task in state waiting.
2. Wait for it
Long-poll the wait endpoint. It returns as soon as the job settles, or after about 55 seconds with the current state so you can call it again in a loop.
request
curl https://api.gigai.tools/v1/jobs/JOB_ID/wait \
-H "Authorization: Bearer $GIGAI_API_KEY"3. Download the result
The finished export task carries signed URLs. They need no auth header, so they work in curl, a browser, or anything else, until the retention you chose deletes the file.
response (the export task)
{
"name": "out", "status": "finished",
"result": { "files": [
{ "filename": "qr.png", "size": 1577,
"url": "https://gigai.tools/v1/files/file_.../download?e=...&s=..." }
]}
}Working with your own files
Import tasks bring files in, by URL or inline as base64. Chain any tool from the catalog between import and export.
"tasks": {
"in1": { "operation": "import/url", "url": "https://example.com/a.pdf" },
"in2": { "operation": "import/base64", "file": "<base64>", "filename": "b.pdf" },
"merge": { "operation": "merge-pdf", "input": ["in1", "in2"] },
"out": { "operation": "export/url", "input": ["merge"] }
}Or skip the HTTP entirely
The SDKs wrap the whole loop in one call:
python
from gigai_tools import Client
Client().run("merge-pdf", files=["a.pdf", "b.pdf"], output="merged.pdf")The full contract lives in the OpenAPI 3.1 spec. Privacy is part of it: file contents are never logged, results are deleted after your chosen retention, and deletion is verified.