Skip to content

Integrations

Neon

Connect Neon to Alter Vault for secure API access

Use Neon credentials to make authenticated API calls through Alter Vault without exposing API keys in code.

PropertyValue
Template IDneon
CategoryDatabase
Credential TypeAPI Key

Log in to the Neon Console

Log in to the Neon Console.

Open API keys

Go to Account settings > API keys — or Organization settings for an org/project-scoped key.

Create a key

Click Create new API key and name it.

Copy the key

Copy the key (starts with napi_) — it is only shown once.

Open the Developer Portal

Go to portal.alterauth.com and navigate to the application.

Add Neon

Go to Managed Secrets > Add Provider > Neon.

Enter credentials

Paste the API Key into the credential field.

Save

Click Save. You’ll receive a grant_id to use with the SDK.

response = await alter_app.request(
HttpMethod.GET,
"https://console.neon.tech/api/v2/projects",
grant_id="YOUR_GRANT_ID",
)
  • The Neon API manages projects, branches, computes, databases, and roles — ideal for provisioning an isolated Postgres branch per agent or per session.
  • Running SQL uses the Postgres protocol or Neon’s serverless driver against the branch’s connection string, not this API key.

Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.

Operation IDFamiliesMethodProvider pathNotes
listProjectsreadGET/projects—
getProjectreadGET/projects/{project_id}—
createProjectwritePOST/projects—
updateProjectwritePATCH/projects/{project_id}—
deleteProjectdeleteDELETE/projects/{project_id}—
getConnectionURIreadGET/projects/{project_id}/connection_urirefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
listProjectBranchesreadGET/projects/{project_id}/branches—
getProjectBranchreadGET/projects/{project_id}/branches/{branch_id}—
createProjectBranchwritePOST/projects/{project_id}/branches—
deleteProjectBranchdeleteDELETE/projects/{project_id}/branches/{branch_id}—
restoreProjectBranchwritePOST/projects/{project_id}/branches/{branch_id}/restore—
setDefaultProjectBranchwritePOST/projects/{project_id}/branches/{branch_id}/set_as_default—
listProjectBranchDatabasesreadGET/projects/{project_id}/branches/{branch_id}/databases—
getProjectBranchDatabasereadGET/projects/{project_id}/branches/{branch_id}/databases/{database_name}—
createProjectBranchDatabasewritePOST/projects/{project_id}/branches/{branch_id}/databases—
updateProjectBranchDatabasewritePATCH/projects/{project_id}/branches/{branch_id}/databases/{database_name}—
deleteProjectBranchDatabasedeleteDELETE/projects/{project_id}/branches/{branch_id}/databases/{database_name}—
listProjectBranchRolesreadGET/projects/{project_id}/branches/{branch_id}/roles—
getProjectBranchRolereadGET/projects/{project_id}/branches/{branch_id}/roles/{role_name}—
createProjectBranchRolewritePOST/projects/{project_id}/branches/{branch_id}/rolesrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
deleteProjectBranchRoledeleteDELETE/projects/{project_id}/branches/{branch_id}/roles/{role_name}—
getProjectBranchRolePasswordreadGET/projects/{project_id}/branches/{branch_id}/roles/{role_name}/reveal_passwordrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
resetProjectBranchRolePasswordadminPOST/projects/{project_id}/branches/{branch_id}/roles/{role_name}/reset_passwordrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
listProjectEndpointsreadGET/projects/{project_id}/endpoints—
getProjectEndpointreadGET/projects/{project_id}/endpoints/{endpoint_id}—
createProjectEndpointwritePOST/projects/{project_id}/endpoints—
updateProjectEndpointwritePATCH/projects/{project_id}/endpoints/{endpoint_id}—
deleteProjectEndpointdeleteDELETE/projects/{project_id}/endpoints/{endpoint_id}—
startProjectEndpointwritePOST/projects/{project_id}/endpoints/{endpoint_id}/start—
suspendProjectEndpointwritePOST/projects/{project_id}/endpoints/{endpoint_id}/suspend—
listApiKeysreadGET/api_keys—
createApiKeyadminPOST/api_keysrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
revokeApiKeyadmin, deleteDELETE/api_keys/{key_id}—
listProjectPermissionsreadGET/projects/{project_id}/permissions—
grantPermissionToProjectadminPOST/projects/{project_id}/permissions—
revokePermissionFromProjectadmin, deleteDELETE/projects/{project_id}/permissions/{permission_id}—
listProjectOperationsreadGET/projects/{project_id}/operations—
getProjectOperationreadGET/projects/{project_id}/operations/{operation_id}—
createOrgApiKeyadminPOST/organizations/{org_id}/api_keysrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
createCredentialadminPOST/projects/{project_id}/branches/{branch_id}/credentialsrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
revealCredentialadminPOST/projects/{project_id}/branches/{branch_id}/credentials/{token_id}/revealrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
rotateCredentialadminPOST/projects/{project_id}/branches/{branch_id}/credentials/{token_id}/rotaterefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
createNeonAuthProviderSDKKeysadminPOST/projects/auth/keysrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
createNeonAuthOAuthClientadminPOST/projects/{project_id}/branches/{branch_id}/auth/oauth-provider/clientsrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
rotateNeonAuthOAuthClientSecretadminPOST/projects/{project_id}/branches/{branch_id}/auth/oauth-provider/clients/{client_id}/rotate_secretrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.