Neon is expanding into a backend: Object Storage, Functions, and AI Gateway now in beta
/APIs & SDKs/Organizations and networking/api

Neon CLI command: api

Call any Neon API route directly as an authenticated passthrough

The api command sends an authenticated request to any Neon API route and prints the response. Pass an API path as the first argument. The method defaults to GET, or POST when you supply a body.

By default the request uses your neon auth credentials. To use a specific key, pass --api-key or set NEON_API_KEY. The key's permissions determine what the request can do.

note

api is a raw passthrough: it does not read your context file or auto-fill parameters. Pass what each route needs explicitly. For example, neon api /projects returns ERROR: org_id is required unless you add -Q org_id=<org_id> or authenticate with an organization API key. Get your organization ID from neon orgs list.

Usage

neon api <path> [options]

Options

OptionDescriptionTypeDefaultRequired
--data, -dRaw request body: a JSON string, @file, or - for stdin. Overrides --field.stringNo
--field, -FBody field key=value (repeatable). Dot-notation nests objects (e.g. -F branch.name=dev); values are typed (numbers, booleans, null, JSON).arrayNo
--header, -HExtra request header key:value (repeatable).arrayNo
--include, -iPrint the response status and headers before the body.booleanfalseNo
--listList available API endpoints from the OpenAPI spec.booleanfalseNo
--method, -XHTTP method (GET, POST, PUT, PATCH, DELETE). Defaults to GET, or POST when a body is provided.stringNo
--query, -QQuery parameter key=value (repeatable).arrayNo
--raw-field, -fBody field key=value with the value kept as a raw string.arrayNo
--refreshRefresh the cached OpenAPI spec (used with --list).booleanfalseNo

Examples

GET request

Pass required parameters with --query (-Q); add --include (-i) to print the status and headers before the body:

neon api /projects -Q org_id=org-cool-darkness-12345678 -i

The response is the route's raw JSON. For the fields each route returns, see the Neon API Reference.

Request body

Set body fields with --field (-F) as key=value. Values are typed automatically (numbers, booleans, null, and JSON), and dot-notation nests objects. A body switches the default method to POST:

neon api /projects/{project_id}/branches -F branch.name=dev

This sends { "branch": { "name": "dev" } }. Use --raw-field (-f) to keep a value as a literal string. For a full JSON body, use --data (-d) with a string, @file, or - (stdin).

Create a project

POST /projects takes a project object. To create it under an organization, set project.org_id in the body (unlike GET /projects, which takes org_id as a query parameter):

neon api /projects -X POST -F project.name=my-project -F project.org_id=org-cool-darkness-12345678

For a larger body, put the JSON in a file and pass it with -d @<file>:

project.json
{
  "project": {
    "name": "my-project",
    "org_id": "org-cool-darkness-12345678"
  }
}
neon api /projects -X POST -d @project.json

List endpoints

--list prints every route from the Neon OpenAPI spec; --refresh refetches the cached spec:

neon api --list

YAML output

Responses print as JSON. Use the global --output yaml (-o yaml) for YAML:

neon api /projects -Q org_id=org-cool-darkness-12345678 -o yaml
Was this page helpful?
Edit on GitHub

On this page

Copy neon init command