Wakatipu API v0.3.4

Wakatipu API User Documentation

Turn documents, PDFs, images, spreadsheets, email files, archives, web pages, and text payloads into structured JSON from one authenticated API.

Production API URL: https://wakatipu-api.appcloud.cyou

Simple User Path

  1. Create or open your Wakatipu API account at https://wakatipu-api.appcloud.cyou/account.
  2. Use the 5 free API credits added after signup, or buy more API credits.
  3. Create an API key from the account page.
  4. Send X-API-Key: <your key> with every /api/... request.
  5. Start with document extraction, text cleaning, or article extraction.

Quick Links

Ethical And Safety Use

Use Wakatipu for content you own, are allowed to process, or are permitted to access. Do not use it to bypass paywalls, access controls, rate limits, robots policies, private networks, authentication, or copyright restrictions.

Authentication And Billing

All machine endpoints under /api/... require X-API-Key. New accounts receive 5 free API credits. Successful paid API calls consume one API credit; failed calls do not. Monthly credits are consumed before one-time/free credits. Background job submit endpoints consume a credit only when the submit request succeeds; polling a job does not debit another credit.

API keys are managed from the account page. You can create keys, rename them for easier tracking, and revoke old keys. Revoked keys become inactive and are not shown again as raw secrets.

curl -H "X-API-Key: $WAKATIPU_API_KEY" \
  https://wakatipu-api.appcloud.cyou/api/tools/catalog
ProductUse it for
Wakatipu APIMachine API calls with customer-owned API keys.

Plans are Standard $2 for 50 uses, Pro $5 for 200 uses, and Ultimate $15 for 1200 uses. Monthly credits are added by an active subscription. One-time packs stack with monthly and free credits.

Ten High-Value Endpoints

MethodEndpointUse
POST/api/documents/extract-textGeneral text extraction.
POST/api/pdf/extract-tablesExtract tables from PDFs.
POST/api/ocr/imageOCR images and scans.
POST/api/spreadsheets/readRead CSV and Excel-style rows.
POST/api/email/parseParse EML or MSG files.
POST/api/archives/inspectInspect archives and flag unsafe entries.
POST/api/web/extract-articleExtract readable article text from a public URL.
POST/api/text/cleanNormalize and clean text.
POST/api/text/pii-redactRedact common email and phone patterns.
POST/api/vectors/searchRank supplied documents against a query.

Examples

Extract Document Text

curl -H "X-API-Key: $WAKATIPU_API_KEY" \
  -F "file=@sample.pdf" \
  https://wakatipu-api.appcloud.cyou/api/documents/extract-text

Clean Text

curl -H "X-API-Key: $WAKATIPU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Messy   text"}' \
  https://wakatipu-api.appcloud.cyou/api/text/clean

Python Examples

import os
import requests

base_url = "https://wakatipu-api.appcloud.cyou"
headers = {"X-API-Key": os.environ["WAKATIPU_API_KEY"]}

with open("sample.pdf", "rb") as handle:
    response = requests.post(
        f"{base_url}/api/documents/extract-text",
        headers=headers,
        files={"file": ("sample.pdf", handle, "application/pdf")},
        timeout=120,
    )

response.raise_for_status()
print(response.json()["text"][:500])

Node.js Examples

import fs from "node:fs";

const baseUrl = "https://wakatipu-api.appcloud.cyou";
const form = new FormData();
form.append("file", new Blob([fs.readFileSync("sample.pdf")]), "sample.pdf");

const response = await fetch(`${baseUrl}/api/documents/extract-text`, {
  method: "POST",
  headers: {"X-API-Key": process.env.WAKATIPU_API_KEY},
  body: form
});

if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
const response = await fetch("https://wakatipu-api.appcloud.cyou/api/text/clean", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.WAKATIPU_API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({text: "Messy   text\n\nthat needs cleanup"})
});

if (!response.ok) throw new Error(await response.text());
console.log(await response.json());

Endpoint Groups

The complete list is maintained in the expanded endpoint catalog. It covers core Wakatipu file extraction, 70 expanded file endpoints, 30 generated Lucerne JSON endpoints, retained outputs, workflow jobs, billing, account, health, metrics, and admin routes.

Background Jobs

Use /api/jobs/pdf/render-pages, /api/jobs/ocr/image, or /api/jobs/media/transcribe for longer work, then poll /api/jobs/{job_id}.

curl -H "X-API-Key: $WAKATIPU_API_KEY" \
  https://wakatipu-api.appcloud.cyou/api/jobs/<job_id>
import os
import time
import requests

base_url = "https://wakatipu-api.appcloud.cyou"
headers = {"X-API-Key": os.environ["WAKATIPU_API_KEY"]}

with open("sample.mp3", "rb") as handle:
    submit = requests.post(f"{base_url}/api/jobs/media/transcribe", headers=headers, files={"file": handle}, timeout=60)
submit.raise_for_status()
job_id = submit.json()["job_id"]

while True:
    status = requests.get(f"{base_url}/api/jobs/{job_id}", headers=headers, timeout=30)
    status.raise_for_status()
    payload = status.json()
    if payload["status"] in {"succeeded", "failed", "cancelled"}:
        print(payload)
        break
    time.sleep(2)

Operational Limits

Default max upload size is 25 MB, default timeout is 120 seconds, rate-limit responses return 429, and quota exhaustion returns 402.