Skip to content
GigAI Tools

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.

Was this page helpful?