Create Project
POSThttps://api.confident-ai.com/v2/projects
Creates a project in your organization and provisions a project-scoped API key for it. The key's full value is returned once, in this response, and is redacted on every later read — so capture it here. The new project is seeded with Confident AI's default classifiers, online metric and trace alert, and pass email to assign an existing organization member as its Owner. How many projects you may hold depends on your plan, so this call can be refused on entitlement grounds even when the name is free.
curl -X POST "https://api.confident-ai.com/v2/projects" \
-H "CONFIDENT_API_KEY: <ORGANIZATION-API-KEY>" \
-H "Content-Type: application/json" \
-d '{
"name": "Customer Support Agent",
"description": "The support chatbot serving acme.com.",
"email": "jane@acme.com"
}'{
"success": true,
"data": {
"project": {
"id": "<PROJECT-ID>",
"name": "Customer Support Agent",
"description": "The support chatbot serving acme.com.",
"organizationId": "<ORGANIZATION-ID>",
"created_at": "2025-01-14T09:30:00.000Z"
},
"apiKey": {
"id": 1041,
"name": "Default Key",
"valid": true,
"value": "confident_us_proj_KZ0m8vQ2sVxT1bR4dYnJ6hLpA3wUcE9f",
"shadowValue": null,
"rotatesAt": null,
"created_at": "2025-01-14T09:30:00.000Z",
"lastUsed": null,
"expiresAt": null
}
},
"deprecated": false
}Headers
CONFIDENT_API_KEYstringRequiredThe organization API key for your Confident AI organization.
Request body
namestringRequiredThe name of the project, which must not already be taken by another project in the organization.
descriptionstringWhat the project covers. Omit it to leave it unset.
emailstringThe email of an existing member of your organization to assign as the project's Owner, which also attributes the provisioned API key to them. Omit it and the project has no member: it is reachable through its API key and to organization admins only.
Response
Create Project succeeded.
successbooleanIndicates if the request was successful.
dataobjectThe created project and the API key provisioned with it. The key's
valueis not retrievable afterwards, so read it out of this response.Show 2 propertiesHide 2 properties
projectobjectA project's own fields, without its governance enrollment. This is the shape create returns, where the project cannot yet be enrolled in a policy.
Show 5 propertiesHide 5 properties
idstringThe id of the project, generated by Confident AI.
namestringThe name of the project, unique within the organization.
descriptionstring | nullWhat the project covers, or null when it has no description.
organizationIdstringThe id of the organization the project belongs to.
created_atstringWhen the project was created.
apiKeyobject | nullThe project-scoped API key provisioned alongside a new project, returned with its full value exactly once. This is the key an SDK config gets, and it is the credential the project's own data endpoints authenticate with — the organization key you created the project with cannot reach them.
Show 9 propertiesHide 9 properties
idintegerThe id of the API key, generated by Confident AI. Pass it as
apiKeyIdwhen deactivating or rotating the key.namestring | nullThe label the key is listed under.
validbooleanWhether the key is active. A deactivated key is rejected on authentication.
valuestringThe full, unmasked key. This is the only response that ever carries it — every later read of this key redacts it to its last six characters — so store it now.
shadowValuestring | nullThe replacement value while a rotation's grace period is running. Always null on a freshly provisioned key, since nothing has been rotated yet.
rotatesAtstring | nullWhen a pending rotation completes and
shadowValuereplacesvalue, or null when no rotation is pending.created_atstringWhen the key was created.
lastUsedstring | nullWhen the key was last used to authenticate, or null if it has never been used.
expiresAtstring | nullWhen the key expires, or null if it never expires. A provisioned key never expires; create your own key with
expiresInDaysif you want one that does.
deprecatedbooleanIndicates if this endpoint is deprecated.