An Appwrite Project is the top-level container for all the resources your app uses, from users and databases to storage buckets and functions. The settings on a project control which authentication methods are available, which client platforms can connect, which protocols and services are exposed, and which policies apply to the resources inside it.
Built for platform teams
The Console configures one project at a time by hand. The Project API does the same configuration programmatically, which is what teams need when they operate not one project but many: a platform that gives every customer their own project, an agency running client environments, or an enterprise standardizing dozens of internal apps.
Driving configuration from code is what makes a fleet of projects manageable. Provision every new project to the same baseline, enforce one security posture across all of them, and send each customer branded emails from their own domain. The guides below walk through each of these end to end.
Concepts
Auth methods
Enable or disable authentication methods on your project.
OAuth providers
Configure OAuth2 sign-in providers like Google, GitHub, and Apple.
API keys
Create and manage API keys used by Server SDKs.
Platforms
Register the apps and origins that are allowed to call your project.
Protocols
Toggle the API protocols clients can use to reach your project.
Services
Turn individual Appwrite services on or off for your project.
Policies
Configure project-wide policies that apply across resources.
Mock phones
Register fictional phone numbers and OTPs to test phone authentication.
Environment variables
Share constants and secrets across your functions and sites.
SMTP
Send emails from your own custom SMTP server.
Email templates
Customize the account management emails Appwrite sends to your users.
Labels
Tag projects with customizable labels to organize and filter them.
Guides
Provisioning
Apply a standard baseline to a new customer's project from a script.
Key rotation
Issue, audit, rotate, and revoke scoped API keys programmatically.
Branded emails
Route a project's mail through custom SMTP and rebrand the templates.
Retrieve your project
Fetch your project's current configuration in a single call, including its name, region, labels, and the settings managed on the pages above. Use a Server SDK.
Required scope
The API key used for this call needs the project.read scope.
import { Client, Project } from 'node-appwrite';
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>') // Your project ID
.setKey('<YOUR_API_KEY>'); // Your API key
const project = new Project(client);
const result = await project.get();
Delete a project
Permanent and irreversible
Deleting a project permanently removes it along with every resource inside it, including users, databases, storage, functions, and sites. This action cannot be undone. The call targets the project tied to the API key and endpoint you initialize the SDK with, so make sure you are pointing at the project you intend to delete.
The delete method requires an API key with the project.write scope. It takes no parameters and acts on the project the request is scoped to.
import { Client, Project } from 'node-appwrite';
const client = new Client()
.setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint
.setProject('<YOUR_PROJECT_ID>') // Your project ID
.setKey('<YOUR_API_KEY>'); // Your API key
const project = new Project(client);
const result = await project.delete();