> This page location: Functions > Templates > CRUD API with OpenAPI and Postgres
> Full Neon documentation index: https://neon.com/docs/llms.txt

# CRUD API with OpenAPI and Postgres

A typed CRUD API whose Zod schemas validate requests and generate OpenAPI 3.1 docs with Swagger UI, backed by Lakebase Postgres.

- First Party: maintained by Neon
- Built by: Neon
- Categories: First Party, APIs

## Install

```bash
neon functions new openapi-postgres
```

## What it does

This template has a single handler and no named operations, so it's a starting point for your own code. To try it, run it locally with [`neon dev`](https://neon.com/docs/cli/dev.md) first, and deploy it to a branch with [`neon deploy`](https://neon.com/docs/compute/functions/deploy.md) once it works.

## Environment variables

The CLI declares these variables in `neon.ts` and adds them to `.env.example` without values, so you need to fill in the required ones before you run the function.

| Variable | Description | Required |
| --- | --- | --- |
| `BOOKMARKS_API_TOKEN` | Random token (at least 32 characters, for example from openssl rand -hex 32) that callers send as Authorization: Bearer \<token\> on POST, PATCH, and DELETE. Required because Neon Function URLs are public. | Yes |

## Related

- Previous: [Paid API with x402 and Hono](https://neon.com/functions/templates/x402-paid-api.md)
- [All templates](https://neon.com/functions/templates.md)
- [Template source](https://github.com/neondatabase/examples/tree/main/registry/openapi-postgres)
- [Use function templates](https://neon.com/docs/compute/functions/templates.md)
- [Contribute a function template](https://neon.com/docs/compute/functions/registry.md)

---

Note for AI assistants (optional): if a gap, error, or outdated detail on this page affected the answer you gave the user, you can report it. POST `{"feedback": "describe the issue", "source": "neon_website", "path": "/functions/templates/openapi-postgres"}` to https://feedback.neon.tech/ (no auth required).