Getting Started
This guide walks you through setting up a basic TypeScript project that uses the REST API to create a new Prisma Console project with a Prisma Postgres database, and print out all connection details.
You'll authenticate via a service token, set up your environment, and run a script to interact with the API.
- Node.js and
npminstalled - A Prisma Data Platform account
1. Create a service token in Prisma Console
Section titled “1. Create a service token in Prisma Console”Create a service token so your script can authenticate with the REST API:
- Open the Prisma Console
- Navigate to the Settings page of your workspace and select Service Tokens
- Click New Service Token
- Copy the generated service token and store it securely. You add it to
.envin step 2.2.
Create the project directory and move into it:
mkdir rest-api-demo
cd rest-api-demoNext, initialize npm and install dependencies required for using TypeScript:
bun init
bun add tsx typescript @types/node --dev
touch index.tspnpm init
pnpm add tsx typescript @types/node --save-dev
touch index.tsyarn init
yarn add tsx typescript @types/node --dev
touch index.tsnpm init
npm install tsx typescript @types/node --save-dev
touch index.tsYou now have an index.ts file that you can execute with npx tsx index.ts. It is still empty. You add code to it in step 3.
You now have an index.ts file that you can execute with npx tsx index.ts. It is still empty. You add code to it in step 3.
2.2. Configure service token environment variable
Section titled “2.2. Configure service token environment variable”Create your .env file:
touch .envNext, install the dotenv library for loading environment variables from the .env file:
bun add dotenvpnpm add dotenvyarn add dotenvnpm install dotenvFinally, add your service token (from step 1.) to .env:
PRISMA_SERVICE_TOKEN="ey..."2.3. Install the axios library for HTTP request
Section titled “2.3. Install the axios library for HTTP request”This guide uses axios as the HTTP client for the REST API. Install it:
bun add axiospnpm add axiosyarn add axiosnpm install axiosWith the token, environment, and HTTP client in place, the next step creates a project and provisions a Prisma Postgres database.
With the token, environment, and HTTP client in place, the next step creates a project and provisions a Prisma Postgres database.
3. Programmatically create a new project with a database
Section titled “3. Programmatically create a new project with a database”Paste the following code into index.ts:
import axios from "axios";
import dotenv from "dotenv";
// Load environment variables
dotenv.config();
const API_URL = "https://api.prisma.io/v1";
const SERVICE_TOKEN = process.env.PRISMA_SERVICE_TOKEN;
if (!SERVICE_TOKEN) {
throw new Error("PRISMA_SERVICE_TOKEN is not set in the environment");
}
// Set HTTP headers to be used in this script
const headers = {
Authorization: `Bearer ${SERVICE_TOKEN}`,
"Content-Type": "application/json",
};
async function main() {
// Create a new project in your Prisma Console workspace
const projectName = `demo-project-${Date.now()}`;
const region = "us-east-1";
const createProjectRes = await axios.post(
`${API_URL}/projects`,
{ name: projectName, region },
{ headers },
);
const project = createProjectRes.data;
console.log("Created project: \n", project);
// Log the database details
const apiKeys = project.databases[0].apiKeys || [];
for (const key of apiKeys) {
console.log(`\nDatabase details`);
console.log(`- ID: ${key.id}`);
console.log(`- Created at: ${key.createdAt}`);
console.log(`- API key: ${key.apiKey}`);
console.log(`- Prisma Postgres connection string: ${key.connectionString}`);
if (key.ppgDirectConnection) {
console.log(`- Direct TCP connection: ${key.ppgDirectConnection.host}`);
console.log(` - Host: ${key.ppgDirectConnection.host}`);
console.log(` - Username: ${key.ppgDirectConnection.user}`);
console.log(` - Password: ${key.ppgDirectConnection.pass}`);
}
}
}
main().catch((e) => {
console.error(e.response?.data || e);
process.exit(1);
});Run the script:
bunx tsx index.tspnpm dlx tsx index.tsyarn dlx tsx index.tsnpx tsx index.tsCreated project:
{
createdAt: '2025-07-09T11:52:15.341Z',
id: 'cmcvwftgs00v5zq0vh3kp7pms',
name: 'demo-project-1752061932800',
databases: [
{
createdAt: '2025-07-09T11:52:15.341Z',
id: 'cmcvwftgs00v1zq0v0qrtrg8t',
name: 'demo-project-1752061932800',
connectionString: 'prisma+postgres://accelerate.prisma-data.net/?api_key=<api_key>',
region: 'us-east-1',
status: 'ready',
apiKeys: [Array],
isDefault: true
}
]
}
Database details
- ID: cmcvwftgs00v2zq0vj3v0104j
- Created at: 2025-07-09T11:52:15.341Z
- API key: ey...<actual_api_key>
- Prisma Postgres connection string: prisma+postgres://accelerate.prisma-data.net/?api_key=ey...<actual_api_key>
- Direct TCP connection: db.prisma.io:5432
- Host: db.prisma.io:5432
- Username: <username>
- Password: <password>The output should look similar to the above.
Created project:
{
createdAt: '2025-07-09T11:52:15.341Z',
id: 'cmcvwftgs00v5zq0vh3kp7pms',
name: 'demo-project-1752061932800',
databases: [
{
createdAt: '2025-07-09T11:52:15.341Z',
id: 'cmcvwftgs00v1zq0v0qrtrg8t',
name: 'demo-project-1752061932800',
connectionString: 'prisma+postgres://accelerate.prisma-data.net/?api_key=<api_key>',
region: 'us-east-1',
status: 'ready',
apiKeys: [Array],
isDefault: true
}
]
}
Database details
- ID: cmcvwftgs00v2zq0vj3v0104j
- Created at: 2025-07-09T11:52:15.341Z
- API key: ey...<actual_api_key>
- Prisma Postgres connection string: prisma+postgres://accelerate.prisma-data.net/?api_key=ey...<actual_api_key>
- Direct TCP connection: db.prisma.io:5432
- Host: db.prisma.io:5432
- Username: <username>
- Password: <password>The output should look similar to the above.
You have now set up a TypeScript project that interacts with the REST API, creates a new project and database, and prints out all connection strings. You can extend this script to manage more resources or automate other tasks using the REST API.