Skip to main content
Neon Postgres Docs
current

Search documentation

Type to search this documentation.

On this pageOverview

Manage Managed Better Auth via the API

You can manage Managed Better Auth programmatically using the Neon API, or from the terminal with the Neon CLI (neon neon auth), which wraps these same operations. You can also enable and configure Ma...

You can manage Managed Better Auth programmatically using the Neon API, or from the terminal with the Neon CLI (neon neon-auth), which wraps these same operations. You can also enable and configure Managed Better Auth from an AI editor using the Neon MCP server (provision_neon_auth, update_auth_config, add_auth_oauth_provider, get_neon_auth_config). See Set up with your AI editor.

All requests use the base URL https://console.neon.tech/api/v2 and require the Authorization: Bearer $NEON_API_KEY header. The project_id and branch_id values are returned when you create a project or list branches via the API.

Send a POST request to enable Managed Better Auth on a branch:

Bash
curl -X POST 'https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}/auth' \
  -H 'Authorization: Bearer $NEON_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"auth_provider": "better_auth"}'

Response (201 Created):

JSON
{
  "auth_provider": "better_auth",
  "auth_provider_project_id": "cab6949a-10e3-4d25-a879-512beed281e3",
  "pub_client_key": "",
  "secret_server_key": "",
  "jwks_url": "https://ep-example.neonauth.us-east-1.aws.neon.tech/neondb/auth/.well-known/jwks.json",
  "schema_name": "neon_auth",
  "table_name": "users_sync",
  "base_url": "https://ep-example.neonauth.us-east-1.aws.neon.tech/neondb/auth"
}

The response includes:

Field Description
auth_provider The configured provider (better_auth)
auth_provider_project_id Unique ID for the auth provider instance
pub_client_key Public client key (shown once at creation, may be empty for better_auth)
secret_server_key Secret server key (shown once at creation, may be empty for better_auth)
jwks_url JWKS endpoint for JWT verification
schema_name Database schema created for auth tables (neon_auth)
table_name Table name for synced user data (users_sync)
base_url Base URL of the auth service, used for SDK configuration and the interactive API reference (/reference)

If Managed Better Auth is already enabled on the branch, this call returns an error.

Retrieve the current Managed Better Auth configuration for a branch:

Bash
curl -X GET 'https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}/auth' \
  -H 'Authorization: Bearer $NEON_API_KEY'

Response (200 OK):

JSON
{
  "auth_provider": "better_auth",
  "auth_provider_project_id": "cab6949a-10e3-4d25-a879-512beed281e3",
  "branch_id": "br-example-abc123",
  "db_name": "neondb",
  "created_at": "2026-02-26T04:29:05Z",
  "owned_by": "neon",
  "jwks_url": "https://ep-example.neonauth.us-east-1.aws.neon.tech/neondb/auth/.well-known/jwks.json",
  "base_url": "https://ep-example.neonauth.us-east-1.aws.neon.tech/neondb/auth",
  "name": "My App"
}

Update auth settings for a branch. Currently supports changing the application name shown in user-facing auth messages. Applies to Managed Better Auth integrations only. Defaults to the Neon project name.

Bash
curl -X PATCH 'https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}/auth/config' \
  -H 'Authorization: Bearer $NEON_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"name": "My App"}'

Response (200 OK):

JSON
{
  "name": "My App"
}
Field Description
name The name shown in user-facing auth messages (1-256 characters)

Each branch manages its own application name independently. You can also update this from the Auth page > Configuration tab > Project Info panel in the Neon Console.

Send a DELETE request to disable Managed Better Auth on a branch:

Bash
curl -X DELETE 'https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}/auth' \
  -H 'Authorization: Bearer $NEON_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"delete_data": true}'

Response (200 OK): Empty body.

The delete_data field controls whether the system removes the neon_auth schema from your database:

  • true: Deletes the neon_auth schema and all auth tables (users, sessions, accounts).
  • false (default): Disables the auth service but leaves the schema and data intact. You can re-enable later without losing user data.

The Neon API also provides endpoints for managing auth configuration at the branch level. These are available at https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}/auth/...:

Endpoint Methods Description
/domains GET, POST, DELETE Manage trusted redirect domains
/oauth_providers GET, POST, PATCH, DELETE Configure OAuth providers (Google, GitHub, etc.)
/email_provider GET, PATCH Configure the email provider
/email_and_password GET, PATCH Configure email/password authentication
/users POST, DELETE, PUT Create, delete, and manage user roles
/plugins GET, PATCH View and configure auth plugins
/plugins/magic-link PATCH Configure the Magic Link plugin
/plugins/phone-number GET, PATCH Configure the Phone Number plugin
/webhooks GET, PUT Configure webhook notifications
/allow_localhost GET, PATCH Toggle localhost access for development
/config PATCH Update auth configuration (application name)
/send_test_email POST Send a test email to verify email configuration

For full request/response details on these endpoints, see the interactive API Reference.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu