Requires PHP 8.2+
First, install via the Composer package manager:
composer require liucf/neon-sdk-phpThen, interact with Neon's API by creating a client instance with your API key:
$neon = Neon::client('napi_123456789');$neon->apiKeys()->list();$neon->apiKeys()->create(['key_name' => 'Test API Key from SDK']);$neon->apiKeys()->revoke('2188549');$neon->operations()->list('royal-hall-84927440');or with parameters limit and cursor:
$neon->operations()->list('royal-hall-84927440', [
'limit' => 2,
'cursor' => '2025-07-27T01:45:32.898729Z',
]);$neon->operations()->retrieve('royal-hall-84927440', '33d65f33-eabe-4f46-b945-123456789abc');$neon->projects()->list(['project' => ['org_id' => 'org_123456789']]);$neon->projects()->create(['project' => ['name' => 'test_project']]);$neon->projects()->listShared();$neon->projects()->retrieve('project_123456789');$neon->projects()->update('project_123456789', ['project' => ['name' => 'updated_project_name']]);$neon->projects()->delete('project_123456789');$neon->projects()->listPermissions('project_123456789');$neon->projects()->grantPermission('project_123456789', ['email' => 'user@example.com']);$neon->projects()->revokePermission('project_123456789', 'permission_id');$neon->projects()->getAvailablePreloadLibraries('project_123456789');$neon->projects()->createTransferRequest('project_123456789', ['target_email' => 'target@example.com']);$neon->projects()->acceptTransferRequest('project_123456789', 'request_id', ['org_id' => 'org_987654321']);$neon->projects()->listJwks('project_123456789');$neon->projects()->addJwks('project_123456789', [
'jwks_url' => 'https://example.com/.well-known/jwks.json',
'provider_name' => 'Auth0'
]);$neon->projects()->deleteJwks('project_123456789', 'jwks_id');$neon->projects()->getConnectionUri('project_123456789', [
'database_name' => 'main',
'role_name' => 'user'
]);$neon->projects()->listVpcEndpoints('project_123456789');$neon->projects()->setVpcEndpoint('project_123456789', 'vpc_endpoint_id');$neon->projects()->deleteVpcEndpoint('project_123456789', 'vpc_endpoint_id');$neon->branches()->list('project_123456789');$neon->branches()->list('project_123456789', [
'search' => 'test',
'sort_by' => 'name',
'sort_order' => 'asc',
'limit' => 10
]);$neon->branches()->create('project_123456789', [
'branch' => [
'name' => 'test-branch',
'parent_id' => 'br-main-12345'
]
]);$neon->branches()->create('project_123456789');$neon->branches()->count('project_123456789');$neon->branches()->retrieve('project_123456789', 'br-branch-test-12345');$neon->branches()->update('project_123456789', 'br-branch-test-12345', [
'branch' => [
'name' => 'updated-branch-name'
]
]);$neon->branches()->delete('project_123456789', 'br-branch-test-12345');$neon->branches()->restore('project_123456789', 'br-branch-test-12345', [
'source_branch_id' => 'br-main-12345',
'timestamp' => '2025-07-26T12:00:00Z'
]);$neon->branches()->setAsDefault('project_123456789', 'br-branch-test-12345');$neon->branches()->getSchema('project_123456789', 'br-branch-test-12345', [
'db_name' => 'main',
'format' => 'sql'
]);$neon->branches()->getSchema('project_123456789', 'br-branch-test-12345', [
'db_name' => 'main',
'timestamp' => '2025-07-26T12:00:00Z',
'format' => 'json'
]);$neon->branches()->compareSchema('project_123456789', 'br-branch-test-12345', [
'target_branch_id' => 'br-main-12345',
'db_name' => 'main'
]);$neon->branches()->listEndpoints('project_123456789', 'br-branch-test-12345');$neon->branches()->listDatabases('project_123456789', 'br-branch-test-12345');$neon->branches()->listRoles('project_123456789', 'br-branch-test-12345');$neon->endpoints()->list('project_123456789');$neon->endpoints()->create('project_123456789', [
'endpoint' => [
'branch_id' => 'br-branch-test-12345',
'type' => 'read_write',
'autoscaling_limit_min_cu' => 1,
'autoscaling_limit_max_cu' => 2
]
]);$neon->endpoints()->create('project_123456789', [
'endpoint' => [
'branch_id' => 'br-branch-test-12345',
'type' => 'read_only',
'autoscaling_limit_min_cu' => 0.25,
'autoscaling_limit_max_cu' => 1
]
]);$neon->endpoints()->retrieve('project_123456789', 'ep-endpoint-123456');$neon->endpoints()->update('project_123456789', 'ep-endpoint-123456', [
'endpoint' => [
'autoscaling_limit_max_cu' => 4,
'suspend_timeout_seconds' => 600
]
]);$neon->endpoints()->delete('project_123456789', 'ep-endpoint-123456');$neon->endpoints()->start('project_123456789', 'ep-endpoint-123456');$neon->endpoints()->suspend('project_123456789', 'ep-endpoint-123456');$neon->endpoints()->restart('project_123456789', 'ep-endpoint-123456');$neon->users()->me();$neon->users()->organizations();$neon->users()->transferProjects([
'project_ids' => ['royal-hall-11111111', 'golden-sunset-22222222'],
'org_id' => 'org-123456'
]);$neon->users()->authDetails();$neon->consumption()->account();$neon->consumption()->account([
'from' => '2025-07-01T00:00:00Z',
'to' => '2025-07-31T23:59:59Z',
'granularity' => 'monthly'
]);$neon->consumption()->projects();$neon->consumption()->projects([
'from' => '2025-07-01T00:00:00Z',
'to' => '2025-07-31T23:59:59Z',
'granularity' => 'daily',
'org_id' => 'org-123456'
]);$neon->organizations()->retrieve('org-morning-bread-81040908');$neon->organizations()->listApiKeys('org-morning-bread-81040908');$neon->organizations()->createApiKey('org-morning-bread-81040908', [
'key_name' => 'production-api-key'
]);$neon->organizations()->revokeApiKey('org-morning-bread-81040908', 165434);$neon->organizations()->getMembers('org-morning-bread-81040908');$neon->organizations()->updateMember('org-morning-bread-81040908', 'user-123', [
'role' => 'admin'
]);$neon->organizations()->removeMember('org-morning-bread-81040908', 'user-123');$neon->organizations()->createInvitation('org-morning-bread-81040908', [
'email' => 'user@example.com',
'role' => 'member'
]);$neon->organizations()->listInvitations('org-morning-bread-81040908');$neon->organizations()->revokeInvitation('org-morning-bread-81040908', 123);$neon->organizations()->resendInvitation('org-morning-bread-81040908', 123);$neon->organizations()->transferProjects('org-morning-bread-81040908', [
'project_ids' => ['project-123', 'project-456']
]);$neon->organizations()->listVpcEndpoints('org-morning-bread-81040908');$neon->organizations()->getVpcEndpointDetails('org-morning-bread-81040908', 'us-east-1', 'vpce-123');$neon->organizations()->assignVpcEndpoint('org-morning-bread-81040908', 'us-east-1', 'vpce-123', [
'label' => 'production-vpc'
]);$neon->organizations()->deleteVpcEndpoint('org-morning-bread-81040908', 'us-east-1', 'vpce-123');$neon->regions()->list();$neon->auth()->createIntegration([
'project_id' => 'project_123456789',
'auth_provider' => 'auth0',
'domain' => 'example.auth0.com'
]);$neon->auth()->listRedirectUriWhitelistDomains('project_123456789');$neon->auth()->addDomainToRedirectUriWhitelist('project_123456789', [
'domain' => 'https://example.com'
]);$neon->auth()->deleteDomainFromRedirectUriWhitelist('project_123456789', [
'domain' => 'https://example.com'
]);$neon->auth()->createProviderSdkKeys([
'project_id' => 'project_123456789',
'provider' => 'supabase'
]);$neon->auth()->createUser([
'project_id' => 'project_123456789',
'email' => 'user@example.com',
'password' => 'securepassword123'
]);$neon->auth()->deleteUser('project_123456789', 'auth_user_123');$neon->auth()->transferProviderProject([
'project_id' => 'project_123456789',
'target_project_id' => 'project_987654321'
]);$neon->auth()->listIntegrations('project_123456789');$neon->auth()->listOauthProviders('project_123456789');$neon->auth()->addOauthProvider('project_123456789', [
'provider_type' => 'google',
'client_id' => 'google_client_id',
'client_secret' => 'google_client_secret'
]);$neon->auth()->updateOauthProvider('project_123456789', 'oauth_provider_123', [
'client_secret' => 'new_client_secret'
]);$neon->auth()->deleteOauthProvider('project_123456789', 'oauth_provider_123');$neon->auth()->getEmailServerConfig('project_123456789');$neon->auth()->updateEmailServerConfig('project_123456789', [
'smtp_host' => 'smtp.example.com',
'smtp_port' => 587,
'smtp_user' => 'admin@example.com'
]);$neon->auth()->deleteIntegration('project_123456789', 'auth0');$neon->dataAPI()->create('project_123456789', 'br-branch-test-12345');$neon->dataAPI()->create('project_123456789', 'br-branch-test-12345', [
'database_name' => 'main',
'role_name' => 'neondb_owner'
]);$neon->dataAPI()->get('project_123456789', 'br-branch-test-12345');$neon->dataAPI()->delete('project_123456789', 'br-branch-test-12345');Note This client is inspired by OpenAI PHP.