# ServiceLabs > Every developer utility behind one API. ServiceLabs puts file and document utilities — > HTML → PDF, split PDF, zip, unzip and XLS → XLSX today, with more on the way — behind a > single API key. Call any utility synchronously (wait for the result) or as an async job > (get a job id back, then poll or receive a signed callback). Every call is tracked, with > usage and p50/p95/p99 latency per utility and per API key. ServiceLabs is run by Finnoto for its teams and invited partners. Full, agent-readable documentation lives at https://servicelabs.dev/docs/llms.txt (index) and https://servicelabs.dev/docs/llms-full.txt (complete corpus). ## How a call works - `POST https://api.servicelabs.dev/v1/utilities/{slug}` — **sync**. Waits for the result and answers `200` with a finished job. If the utility runs longer than 90 seconds you get `202` with a job id and it keeps running. - `POST https://api.servicelabs.dev/v1/utilities/{slug}/jobs` — **async**. Answers `202` with a queued job immediately; utilities may run up to 15 minutes. - `GET https://api.servicelabs.dev/v1/jobs/{id}?wait=60` — fetch a job, or long-poll it for up to 60 seconds. - Request body: `{ "input": { … }, "metadata": { … }, "callbackUrl": "https://…" }`. - Auth: `Authorization: Bearer du_live_…` — keys are created in the console (https://app.servicelabs.dev), scoped to utilities, rate-limited per key, revocable. ## Utilities Each utility has a product page with its exact inputs, limits, errors and examples: - [HTML to PDF](https://servicelabs.dev/utilities/html-pdf) (`html-pdf`) — render an HTML document (URL or s3://) to PDF in headless Chromium, with page size, orientation, scale and margins. - [Split PDF](https://servicelabs.dev/utilities/split-pdf) (`split-pdf`) — one single-page PDF per page (≤150 MB, ≤500 pages, no password-protected files). - [Zip files](https://servicelabs.dev/utilities/zip-files) (`zip-files`) — download 1–500 URLs and pack them into one .zip with the entry names you choose. - [Unzip archive](https://servicelabs.dev/utilities/unzip-files) (`unzip-files`) — extract every entry of a .zip and return one link per file, folder paths kept. - [XLS to XLSX](https://servicelabs.dev/utilities/xls-to-xlsx) (`xls-to-xlsx`) — convert a legacy .xls workbook to .xlsx (values only). All of them: https://servicelabs.dev/utilities. Next up, not callable yet: OCR and invoice extraction, PDF to images, Excel splitting. ## What every call gets - A job with a stable id, status, timings (queue, utility, storage, total) and `result.files[]` (url, key, name, size, content type). - Idempotency via the `Idempotency-Key` header; retries of transient failures only. - Callbacks signed per the Standard Webhooks spec with the calling key's own secret. - Usage and latency rollups per utility and per API key, visible in the console. ## Links - Website: https://servicelabs.dev/ - Utilities: https://servicelabs.dev/utilities - Docs: https://servicelabs.dev/docs/ - API reference: https://servicelabs.dev/docs/reference/operations/ - OpenAPI: https://servicelabs.dev/docs/openapi.yaml - Console: https://app.servicelabs.dev/