# What is Capa

Source: https://capacms.com/docs/get-started/what-is-capa

Projects, models, entries, drafts, keys and the CDN, on one page.

Capa is a hybrid headless CMS. Your team writes and publishes in the admin. Your sites, apps and agents read the content as JSON from a cached API.

This page names the parts. Each one has a page of its own.

## The parts

| Part         | What it is                                                                                                          |
| ------------ | ------------------------------------------------------------------------------------------------------------------- |
| **Project**  | One site's space: its models, entries, media, keys and members. Nothing crosses from one project to another.        |
| **Model**    | A content type you define, such as Article or Product. Each has a **namespace**, like `article`, that the API uses. |
| **Field**    | One value on a model: text, a number, a date, an image, a link to another entry.                                    |
| **Entry**    | One piece of content: one article, one product.                                                                     |
| **Relation** | A field that points at another entry, such as an article's author. Your content is a graph, not a set of tables.    |
| **Version**  | Every save of an entry is kept. One version is live.                                                                |
| **Key**      | The credential your code reads with. It decides which project you read and what you see.                            |

## How content gets to your site

1. An editor writes an entry in the admin at [app.capacms.com](https://app.capacms.com) and saves it as a draft.
2. They publish it. That version becomes the live one.
3. Your site asks for it with a key:

```bash
curl "https://cdn.capacms.com/api/entries/article?select=title,slug" \
  -H "x-api-key: $CAPA_KEY" \
  -H "Capa-Version: 2026-10-01"
```

4. Capa's CDN answers from cache when it can. Publishing a change purges the cached copies, so the next read gets the new version.

## Drafts and the live version

Saving never changes your site. Publishing does.

A **production key** sees published entries only. A **draft key** sees drafts too, for preview builds and staging sites. The key decides, never a query parameter. See [Drafts and publishing](https://capacms.com/docs/concepts/drafts-and-publishing).

## Ways to read

| Surface                    | Use it for                                                                                   |
| -------------------------- | -------------------------------------------------------------------------------------------- |
| `GET /api/entries/{model}` | REST reads. Choose fields with `select`, filter, sort, page, and expand relations.           |
| `/api/graphql`             | GraphQL reads, typed from exactly the models your key can read.                              |
| `@capacms/sdk`             | A TypeScript client for both, with types generated from your models and helpers for Next.js. |
| `/v2/api`, `/v3/api`       | The legacy API that existing sites still use. It keeps working.                              |

These are for reading. Content is written in the admin, or by an AI agent through the [Agent API](https://capacms.com/docs/ai/agent-api).

## Who uses it

* **Developers** model the content, make keys and build the site. Start with the [Quickstart](https://capacms.com/docs/get-started/quickstart).
* **Editors** write, schedule and publish. Start with [Your first day](https://capacms.com/docs/get-started/editors).
* **Agencies** run a project per client and hand it over. Start with the [Agency playbook](https://capacms.com/docs/projects/agency-playbook).

## Words you will see

The admin says **project** and **entry**. Parts of the API say **tenant** and **instance** for the same things, such as the `instance:read` scope. See the [Glossary](https://capacms.com/docs/glossary).
