neo4j-aura-provisioning-skill
Provisions and manages Neo4j Aura instances via CLI (aura-cli v1.7+) or REST API. Use when creating, pausing, resuming, resizing, or deleting AuraDB Free/Professional/Business Critical/VDC instances; downloading credentials; scripting CI/CD pipelines; polling async status; or using the Terraform neo
By neo4j-contrib · 515 installs
npx skills add neo4j-contrib/neo4j-skills --skill neo4j-aura-provisioning-skill
Source repository · Upstream listing
When to Use
Creating an Aura instance (CLI, REST API, Python, Terraform)
Pausing, resuming, resizing, or deleting an instance
Downloading initial credentials from creation response
Polling instance status: creating → running
Setting up CI/CD provisioning or teardown pipelines
Choosing instance tier (Free vs Professional vs Business Critical vs VDC)
When NOT to Use
Cypher queries against running DB → neo4j cypher skill
GDS algorithms on Aura → neo4j gds skill (Pro with plugin) or neo4j aura graph analytics skill (serverless)
neo4j admin / cypher shell → neo4j cli tools skill
Application driver setup → use a language driver skill (python, javascript, java, go, dotnet)
Instance Tier Decision Table
Tier API type code Memory GDS Replicas Use when
AuraDB Free free db 1 GB ❌ ❌ Dev/demo; ≤200k nodes/400k rels
AuraDB Professional professional db 2–64 GB plugin available ❌ Production workloads
AuraDB Business Critical business critical 4–384 GB plugin available ✅ HA, multi AZ, SLA
AuraDB VDC enterprise db custom ✅ ✅ Dedicated infra, compliance
AuraDS Professional professional ds 2–64 GB ✅ built in ❌ Data science / GDS
AuraDS Enterprise enterprise ds custom ✅ ✅ Enterprise GDS
AuraDB Free limits : 200k nodes, 400k rels; auto pauses after 72 h inactivity; deleted if paused 30 days; no resize.
Auth Setup
CLI (aura cli v1.7+)
Install (binary, not pip):
Add credentials (from console.neo4j.io → Account Settings → API Credentials):
Verify:
REST API — Get Bearer Token
Token endpoint: POST https://api.neo4j.io/oauth/token
Token expires: 3600 s (1 h) . On 403 → refresh token.
Use in all subsequent calls: header "Authorization: Bearer $TOKEN"
Step 1 — List Tenants (Projects)
CLI:
REST:
Step 2 — Create Instance
CRITICAL: Capture output immediately. Initial password shown ONCE — never retrievable again.
If lost: delete and recreate. Store aura creds.json before doing anything else.
CLI
REST API (full create)
Instance create request body fields:
Field Required Values
name ✅ any string
cloud provider ✅ gcp aws azure
region ✅ see region table
type ✅ see tier table
tenant id ✅ from tenant list
memory ✗ 1GB 2GB 4GB 8GB … 384GB
version ✗ 5 (default)
Step 3 — Poll Until RUNNING (CRITICAL — All Ops Are Async)
ALL lifecycle operations (create, pause, resume, resize) are async. Do NOT attempt connection or next operation until status = running (or paused for pause op).
REST equivalent:
Status lifecycle:
Step 4 — Write .env and Verify
Step 5 — Lifecycle Operations
All operations require instance in the correct state. Wrong state ops return 4xx error.
Pause
Required state: running
Resume
Required state: paused
Resize (Professional+ only — NOT Free)
Required state: running ; instance remains available during resize.
Delete
IRREVERSIBLE. Export snapshots first if data needed.
REST:
Python CI/CD Provisioning Script
Region Codes
AWS
Region code Location
us east 1 N. Virginia
us east 2 Ohio
us west 2 Oregon
eu west 1 Ireland
eu west 3 Paris
eu central 1 Frankfurt
ap southeast 1 Singapore
ap southeast 2 Sydney
ap south 1 Mumbai
sa east 1 São Paulo
GCP
Region code Location
europe west1 Belgium
europe west3 Frankfurt
europe west4 Netherlands
us central1 Iowa
us east1 S. Carolina
us east4 N. Virginia
asia east1 Taiwan
asia northeast1 Tokyo
asia southeast1 Singapore
australia southeast1 Sydney
Azure
Region code Location
eastus E. US
eastus2 E. US 2
westeurope Netherlands
northeurope Ireland
uksouth London
southeastasia Singapore
brazilsouth Brazil
koreacentral Korea
Enterprise tiers (Business Critical, VDC) add 20+ additional regions per provider. Check console for full list.
Free tier: GCP only; limited subset of regions.
Terraform Provider
After terraform apply : poll status before marking infra ready — Terraform resource creation returns when API call completes, not when DB is running .
Common Errors
Error Cause Fix
403 Forbidden after working Token expired (1 h TTL) Re run get token()
409 Conflict on create Name already exists in tenant Change name or delete existing
422 on pause Instance not running Check status; wait for ongoing op to finish
422 on resume Instance not paused Check status
422 on resize Below current usage Reduce data first; can't shrink below usage
Region not found Tier doesn't support that region Use Free tier on GCP only; Pro/BC on all 3 clouds
Credentials lost after create Password only returned at create time Delete + recreate — no reset exists
429 Too Many Requests Rate limit hit (25 req/min Free, 125 req/min Pro+) Add time.sleep(2) between polling calls
instance list returns empty Wrong credential active aura cli credential use name <name
API Rate Limits
Tier Requests/minute
Free / Pro Trial (no billing) 25
Pro with billing, BC, VDC 125
Poll interval: ≥10 s to stay within limits on Free; 5 s safe on Pro+.
On Retry After header in 5xx response: wait that many seconds before retry.
Security Rules
Write initial credentials to .env ; verify .env in .gitignore before proceeding
Never print PASSWORD in CI logs — write to secrets vault (AWS Secrets Manager, GitHub secret, Vault)
Use from env() / os.environ — never hardcode credentials
If .env absent: python dotenv load dotenv() auto loads; do NOT prompt user unless loading fails
WebFetch — Current Docs
Need URL
REST API spec (OpenAPI) https://neo4j.com/docs/aura/platform/api/specification/
CLI reference https://neo4j.com/docs/aura/aura cli/
Region list https://neo4j.com/docs/aura/managing instances/regions/
Auth details https://neo4j.com/docs/aura/api/authentication/
Instance actions https://neo4j.com/docs/aura/managing instances/instance actions/
Checklist
[ ] .env created with URI/user/password; .env in .gitignore
[ ] Initial credentials saved to secure storage immediately after create
[ ] poll status called after create — do NOT connect before status = running
[ ] poll status called after pause/resume
[ ] Correct tier selected (Free for dev, Pro+ for production, BC for HA)
[ ] Region confirmed available for chosen tier and cloud provider
[ ] Tenant ID provided for all create/list operations (required in multi tenant orgs)
[ ] Token refreshed if 1 h old (or 403 received)
[ ] Delete confirmed by user — data loss is permanent, no recovery