TToolFlow

Developers

The same engines, over HTTP

JSON in, JSON out. Authenticate with an X-Api-Key header. The free tier includes 1,500 calls per month — enough for a side project to ship.

Authentication

Every request needs a key. Keys are issued per plan and can be rotated without changing your account. Treat a key like a password: keep it server-side and revoke it immediately if it leaks.

X-Api-Key: tf_live_xxxxxxxxxxxxxxxxxxxx

Key in header

Never in the query string, so keys stay out of logs and browser history.

Fast responses

Utility endpoints answer in milliseconds; PDF jobs depend on document size.

No body logging

Request bodies are processed in memory and discarded after the response.

PDF manipulation

POST

/api/v1/pdf/compress

Compress a PDF. Body: file, quality (screen | ebook | printer | prepress).

POST

/api/v1/pdf/merge

Merge 2–20 PDFs into one document. Body: files[].

POST

/api/v1/pdf/split

Split by page range. Body: file, ranges.

POST

/api/v1/pdf/to-word

Convert a PDF into DOCX. Body: file.

POST

/api/v1/pdf/to-image

Render pages as images. Body: file, format, dpi.

POST

/api/v1/pdf/unlock

Remove a password you own. Body: file, password.

POST

/api/v1/pdf/protect

Encrypt a PDF. Body: file, password, permissions.

Utility endpoints

POST

/api/v1/util/qr

Generate a QR code. Body: text, size, format (png | svg), colours.

POST

/api/v1/util/hash

Hash text or a file. Body: text, algorithm (md5 | sha1 | sha256 | sha384 | sha512).

GET

/api/v1/util/uuid

Generate UUIDs. Query: version (4), count (max 100).

POST

/api/v1/util/base64

Encode or decode Base64. Body: text, mode.

POST

/api/v1/util/password

Generate a password. Body: length, character sets.

Network intelligence

GET

/api/v1/ip/lookup

Geo and network data for an IP. Query: ip (optional).

GET

/api/v1/domain/dns

DNS records. Query: domain, type (A | AAAA | MX | TXT | CNAME | NS | SOA).

GET

/api/v1/domain/ssl

Certificate history for a hostname. Query: domain.

GET

/api/v1/domain/whois

Registration data via RDAP. Query: domain.

Quick start

Pick your language. Replace the key with one from your dashboard.

curl -X POST "https://toolflow.app/api/v1/util/hash" \
  -H "X-Api-Key: tf_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"text":"hello world","algorithm":"sha256"}'

Response shape

Success and error responses share a predictable envelope, so you can branch on success once.

200 OK
{
  "success": true,
  "data": {
    "result": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824",
    "algorithm": "sha256"
  },
  "meta": {
    "plan": "free",
    "calls_limit": 1500,
    "calls_used": 42,
    "request_id": "req_01HX9Z..."
  }
}
429 Too Many Requests
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Monthly API call limit exceeded. Please upgrade your plan."
  }
}

Error codes

UNAUTHORIZED401Missing or invalid API key.
RATE_LIMIT_EXCEEDED429Monthly or burst limit reached.
INVALID_INPUT400A parameter is missing or malformed.
FILE_TOO_LARGE413The uploaded file exceeds the plan limit.
UNSUPPORTED_FORMAT415The file type is not accepted by this endpoint.
PROCESSING_FAILED422The input could not be processed; see message.
INTERNAL_ERROR500Unexpected server error, with a request id.