> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.bannerify.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Key concepts

> Learn the terms Bannerify uses for projects, templates, layers, modifications, and generations.

You design a template once. Every element on it is a layer, and every layer has a name. To make an image, you send the template id and a list of modifications that set new values for some of those layer names. Bannerify renders the template with your values, returns an image or a PDF, and counts one generation against your quota.

## Project

A project owns templates, uploaded assets, API keys, a plan, and a generation count. The dashboard calls it a project, and the API reference calls it a workspace. Every account has a Personal project, and you can create team projects. [Manage projects and members](/docs/account/project) explains how.

## Template

A template is a design on a canvas. You build it in the [template editor](/docs/essentials/template-editor) or start from a template in the gallery. A template renders to a PNG, JPEG, or WebP image, or to a PDF.

## Template id

The template id tells the API which template to render. It looks like `tpl_xxx`. Open the menu on a template card and click **Copy Template ID**.

## Canvas

The canvas is the drawing area of a template. Its width and height are the size of the image or PDF page, in pixels. A request cannot change the canvas size.

## Layer

A layer is one element on the canvas, such as text, an image, a QR code, a barcode, or a table. Give a layer a name when you want to change it from the API. [Elements](/docs/essentials/elements) lists the layer types.

## Modification

A modification sets new values for one layer. It has a `name` that picks the layer, and fields such as `text`, `src`, or `color` that change it. A request carries a list of modifications, and a layer that you leave out keeps the value from the template. [Modifications](/docs/essentials/modifications) lists every field.

## Generation

A generation is one render of a template into a file. Each successful render counts toward your quota, with a few exceptions that [Quota and limits](/docs/account/quota) lists. To review past renders, open **Generations** in the sidebar, or open the menu on a template card and click **View generations**. Each row shows the time, the template, the format, the size, and whether the render was billed, and you can copy the modifications that the request sent. [See your generations](/docs/essentials/generate-images#see-your-generations) has more.

## Direct, stored, and signed

You can get a generated file in three ways.

| Way | Endpoint | What you get |
| - | - | - |
| Direct | `createImage`, `createPdf` | The file in the response body |
| Stored | `createStoredImage`, `createStoredPdf` | JSON with the `url` of a hosted file |
| Signed URL | `signedurl` | An image URL that you can put in an `<img>` tag. The URL carries a signature and not your key |

[Generate images](/docs/essentials/generate-images), [Generate PDFs](/docs/essentials/generate-pdfs), and [Signed URLs](/docs/essentials/signed-urls) show each one.

## API key

An API key is a 64-character secret that belongs to one project. Create it on the **API Keys** page of the dashboard. [Authenticate requests](/docs/api-reference/authentication) shows where to send it.

## Quota and rate limit

The quota is the number of generations your plan allows each month, and each day on the Free plan. The rate limit is the number of requests one API key can send in a 10-second window. [Quota and limits](/docs/account/quota) has both.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.