# Typefold > Typefold renders PDF and Excel (XLSX) documents from HTML or from templates filled with JSON data, through an HTTP API with an API key, hosted or self-hosted. Studio is its web app for writing and previewing templates. --- # AI coding agents Source: https://docs.typefold.dev/start/ai-agents/ The Typefold Agent Skill gives a coding agent what it needs from these docs: which API to call, the request fields, the client libraries, how to write templates, and the errors and limits. The agent reads it when a task involves typefold. To have an assistant render documents for you instead of writing code, connect it to the [MCP server](/clients/ai-assistants/). ## 1. Download the skill Download typefold-skill.zip. It holds a `typefold` folder with `SKILL.md` and a `references` folder. ## 2. Add it to your agent Unzip it where your agent loads skills from: - **Claude Code:** into `.claude/skills/` in your project, so everyone working on it gets the skill, or into `~/.claude/skills/` for all your projects. See [Claude Code skills](https://code.claude.com/docs/en/skills). - **Other agents** that support [Agent Skills](https://agentskills.io/): see where that agent loads skills from. ## 3. Give the agent your address and key The skill's examples read the address and key from the `PDF_URL` and `API_KEY` environment variables, as in the [quickstart](/start/quickstart/). Set them where the agent runs its commands. The skill holds no keys or workspace data. Then ask for what you need, such as "render our invoice template from the order service" or "add a page footer with page numbers to the Invoice template". ## Keep it current The skill matches these docs at the time you download it. Download it again after a new Typefold release. --- # How it works Source: https://docs.typefold.dev/start/concepts/ ## The parts
Your applicationStudioin the browserTypefold APItemplates, renders, keysPDF / XLSXx-api-keysigned infile or link
- **API.** What your application and Studio talk to. It checks every request, stores your templates and renders your documents. - **Studio.** The web app for writing templates and managing the workspace. It uses the same API as your application. ## Workspaces A **workspace** owns everything you create: templates, files, renders, API keys and webhooks. Nothing is shared between workspaces. An API key works only in the workspace it was created in, and Studio shows the workspace you have selected. People join a workspace as an `owner`, `admin` or `member`. Owners and admins manage keys, webhooks and teammates; see [roles](/clients/http/#roles). ## API keys and scopes Applications prove who they are with an **API key**, a secret sent in the `x-api-key` header of every request. Owners and admins create keys in Studio under **Manage → API keys**. Each key has **scopes**, such as `render:create` or `template:publish`, that decide what it may do. Give each key only the scopes its application needs. The full list, expiry and rotation are in [API keys, scopes and roles](/clients/http/#api-keys). ## Templates, drafts and versions A **template** is a reusable document: HTML with [Handlebars](https://handlebarsjs.com/guide/) placeholders, page settings, and the files it uses. You edit its **draft** and preview it in Studio. Publishing freezes the draft, and every file it uses, into a numbered **version**. Later edits never change a published version. See [how templates work](/templates/overview/). ## Two ways to render - **[Reports API](/guides/reports/).** Send a template's name and your data. The response is the PDF or XLSX file, rendered from the newest published version. - **[Renders API](/guides/rendering/).** Create a render job from one specific template version or from your own HTML, and get a PDF. Each render has an ID and moves from `queued` to `processing`, then ends `succeeded`, `failed` or `cancelled`. Wait for it in the request, poll it, or receive a [webhook](/guides/webhooks/). [Batches](/guides/batch-rendering/) and cancelling are only here. See [render states](/guides/rendering/#render-states). ## Next steps - [Quickstart](/start/quickstart/): render your first PDF. - [Limits](/clients/limits/): every size, time and rate limit in one place. --- # Introduction Source: https://docs.typefold.dev/start/introduction/ Typefold turns HTML, or a template plus JSON data, into PDF and Excel files. Your application calls its HTTP API with an API key and gets the finished file in the response or from a background render. Your team writes and previews templates in **Studio**, a web app that also manages API keys, teammates and webhooks. ## What it is good for Documents your application produces again and again from data: - Invoices, receipts and e-invoices with an embedded XML file. - Statements and reports, as a PDF or as a real `.xlsx` workbook. - Tickets, certificates, labels and letters. - Archival and accessible PDFs (PDF/A and PDF/UA). - Short email and SMS texts, written in the same template language. It is a poor fit for turning arbitrary web pages into PDFs: it is not a browser, so it does not run the page's JavaScript and supports its own set of CSS. See [supported CSS](/templates/css-support/) and [what is not supported](/start/not-supported/). ## Hosted or self-hosted The API, Studio and templates work the same in both. - **Hosted.** Sign in to Studio, create a workspace and an API key. Nothing to install. - **Self-hosted.** Run Typefold on your own server, so documents and templates never leave your network. It needs a [license key](/self-hosting/licensing/) to render. See [install](/self-hosting/install/). ## Where to go next - **Trying it out?** The [quickstart](/start/quickstart/) takes you from an API key to a downloaded PDF. - **Want the big picture?** [How it works](/start/concepts/) explains workspaces, API keys, templates and renders. - **Integrating an application?** Render a template by name with the [Reports API](/guides/reports/), or run background render jobs and [batches](/guides/batch-rendering/) with the [Renders API](/guides/rendering/). Call the [HTTP API](/clients/http/) directly, or use the [.NET](/clients/dotnet/), [Python](/clients/python/) or [TypeScript](/clients/typescript/) client. - **Writing templates?** [Build your first template](/guides/first-template/) in Studio. - **Running your own server?** Start with [install](/self-hosting/install/). --- # What's not supported Source: https://docs.typefold.dev/start/not-supported/ Each item below says what to use instead. CSS that is ignored or fails is listed on [Supported CSS](/templates/css-support/). ## Filling in an uploaded PDF's form fields A template can add the pages of a PDF file you upload, or draw onto them, but it cannot type into the file's own fillable fields. **Instead:** draw your template onto the form page by page, placing each value where its box is; see [fill in a supplier's form](/features/combine-templates/#fill-in-a-suppliers-form). ## Uploaded PDF files in PDF/A or PDF/UA documents A PDF/A or PDF/UA document cannot add an uploaded PDF file, because nothing checks that the file meets the standard. **Instead:** rebuild that part as a template and [combine templates](/features/combine-templates/), or turn the standard off for that template. ## JavaScript in the document The renderer does not run JavaScript in the HTML. `