Create a project
Create a Data Studio project in an organization, then read, update, delete, and manage its members. Bearer auth, requires DATA_STUDIO_CREATE.
Create a project
Session-authenticated portal API — authenticate with a portal Bearer token (session JWT), not an API key. It also requires the relevant organization permissions (DATA_STUDIO_ACCESS / DATA_STUDIO_CREATE / DATA_STUDIO_EXECUTE) and the Data Studio add-on on the organization.
A project is the unit of work in Data Studio: an organization-scoped workspace that holds the datasets you add and the configuration you build over them. This page covers creating a project and the per-project endpoints that manage it.
Endpoint
POST /v1/organization/:organizationId/data-studio/projects
Authentication
Like all Data Studio endpoints, this uses a Bearer JWT (see Authentication), not X-API-Key. Creating or modifying projects requires:
- membership in the organization,
- the
DATA_STUDIO_CREATEorganization permission (reading needs onlyDATA_STUDIO_ACCESS), and - the data-studio addon on the organization.
Request
Send a JSON body. Only name is required; description is optional.
curl -X POST \
-H "Authorization: Bearer eyJhbGci..." \
-H "Content-Type: application/json" \
-d '{
"name": "Hotels near Restaurants",
"description": "Hospitality clusters in the Randstad"
}' \
"https://api.topolab.nl/v1/organization/8f0c2e1a-4b6d-4c2a-9e3f-1a2b3c4d5e6f/data-studio/projects"
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Project name, up to 255 characters. |
description |
string | no | Free-text description. |
Response
The created project is returned with its generated id. A new project starts in draft status, private visibility, and unlocked.
{
"id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
"name": "Hotels near Restaurants",
"description": "Hospitality clusters in the Randstad",
"status": "draft",
"visibility": "private",
"isLocked": false,
"createdById": "9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d",
"createdAt": "2026-05-29T10:00:00.000Z"
}
Keep the id, every other per-project endpoint is keyed by it.
Managing a project
Once created, a project is read, updated, and removed through these endpoints (same auth rules, DATA_STUDIO_ACCESS to read, DATA_STUDIO_CREATE to modify):
| Method & path | Purpose |
|---|---|
GET .../projects/:projectId |
Fetch one project, including its full configuration. |
PUT .../projects/:projectId |
Update the project (name, description, visibility, and its workspace configuration). |
DELETE .../projects/:projectId |
Delete the project. Returns { "message": "Project deleted successfully" }. |
The PUT body accepts name, description, and visibility, plus the project's workspace configuration object. That configuration is where layers, processing, and output are defined, see Add a layer, Run a pipeline, and Export output.
Members
A project can be shared with other organization members. Adding or removing members requires the DATA_STUDIO_MANAGE permission.
| Method & path | Purpose |
|---|---|
GET .../projects/:projectId/members |
List members of the project. |
POST .../projects/:projectId/members |
Add a member to the project. |
curl -H "Authorization: Bearer eyJhbGci..." \
"https://api.topolab.nl/v1/organization/8f0c2e1a-4b6d-4c2a-9e3f-1a2b3c4d5e6f/data-studio/projects/c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f/members"
Errors
| Status | Meaning |
|---|---|
400 |
Invalid body, for example a missing name or a name longer than 255 characters. |
401 |
Missing or invalid Bearer token. |
403 |
Not a member, lacking DATA_STUDIO_CREATE, or the data-studio addon is not enabled. |
404 |
Unknown organizationId or projectId. |
Next
- List projects, enumerate the organization's projects.
- Add a layer, add datasets to the project workspace.