> For the complete documentation index, see [llms.txt](https://docs.ai.neevcloud.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ai.neevcloud.com/api-reference/tenant/projects.md).

# Projects

Project management endpoints

## List organization projects

> Retrieve all projects in an organization with optional filtering

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"Projects","description":"Project management endpoints"}],"servers":[{"url":"https://api.ai.neevcloud.com/tenant","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Use the **`access_token`** from `POST /api/v1/auth/login` (same credentials as the console). In **Authorize**, paste **only that token** — do not prepend `Bearer`, and do not use inference keys (`sk-nc-*`) here. The same token authenticates this API and AI Models / AI Runtime.\n"}},"schemas":{"ProjectListResponse":{"type":"object","description":"Response containing a paginated list of projects","properties":{"data":{"type":"array","description":"Array of project objects","items":{"$ref":"#/components/schemas/ProjectResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationResponse"}}},"ProjectResponse":{"type":"object","description":"Response payload containing project details","properties":{"id":{"type":"string","description":"Unique identifier for the project","readOnly":true},"name":{"type":"string","description":"Name of the project","minLength":1,"maxLength":100},"description":{"type":"string","description":"Project's description (if provided)"},"status":{"$ref":"#/components/schemas/ResourceState"}}},"ResourceState":{"type":"string","description":"The lifecycle state of a resource (user/organization/project)","enum":["active","suspended","archived","inactive"],"default":"active"},"PaginationResponse":{"type":"object","properties":{"total_items":{"type":"integer","description":"The total number of items available across all pages."},"total_pages":{"type":"integer","description":"The total number of pages."},"current_page":{"type":"integer","description":"The current page number."},"items_per_page":{"type":"integer","description":"The number of items returned per page."}}},"ErrorResponse":{"type":"object","description":"Standard error response containing an error message","required":["code","message"],"properties":{"code":{"type":"string","description":"A short, machine-readable error code."},"message":{"type":"string","description":"A descriptive error message."}}}}},"paths":{"/api/v1/orgs/{org_id}/projects":{"get":{"operationId":"listProjects","summary":"List organization projects","description":"Retrieve all projects in an organization with optional filtering","tags":["Projects"],"parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","description":"The page number to retrieve.","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","description":"Number of items per page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"search","description":"Search term to filter projects by name","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Organization projects retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectListResponse"}}}},"400":{"description":"Invalid organization ID or query parameters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Insufficient permissions to list organization projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Organization not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error occurred while retrieving projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create project in organization

> Create a new project within an organization

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"Projects","description":"Project management endpoints"}],"servers":[{"url":"https://api.ai.neevcloud.com/tenant","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Use the **`access_token`** from `POST /api/v1/auth/login` (same credentials as the console). In **Authorize**, paste **only that token** — do not prepend `Bearer`, and do not use inference keys (`sk-nc-*`) here. The same token authenticates this API and AI Models / AI Runtime.\n"}},"schemas":{"ProjectRequest":{"type":"object","description":"Request payload for creating or updating a project","required":["name"],"properties":{"name":{"type":"string","description":"Name of the project (1-100 characters)","minLength":1,"maxLength":100},"description":{"type":"string","description":"Optional description of the project's purpose or environment"}}},"ProjectResponse":{"type":"object","description":"Response payload containing project details","properties":{"id":{"type":"string","description":"Unique identifier for the project","readOnly":true},"name":{"type":"string","description":"Name of the project","minLength":1,"maxLength":100},"description":{"type":"string","description":"Project's description (if provided)"},"status":{"$ref":"#/components/schemas/ResourceState"}}},"ResourceState":{"type":"string","description":"The lifecycle state of a resource (user/organization/project)","enum":["active","suspended","archived","inactive"],"default":"active"},"ErrorResponse":{"type":"object","description":"Standard error response containing an error message","required":["code","message"],"properties":{"code":{"type":"string","description":"A short, machine-readable error code."},"message":{"type":"string","description":"A descriptive error message."}}}}},"paths":{"/api/v1/orgs/{org_id}/projects":{"post":{"operationId":"createProject","summary":"Create project in organization","description":"Create a new project within an organization","tags":["Projects"],"parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectRequest"}}}},"responses":{"201":{"description":"Project created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"400":{"description":"Invalid project data format or missing required fields.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Insufficient permissions to create project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Organization not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Project with the same name already exists in the organization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error occurred while creating project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get project in organization

> Retrieve project details by ID within an organization

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"Projects","description":"Project management endpoints"}],"servers":[{"url":"https://api.ai.neevcloud.com/tenant","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Use the **`access_token`** from `POST /api/v1/auth/login` (same credentials as the console). In **Authorize**, paste **only that token** — do not prepend `Bearer`, and do not use inference keys (`sk-nc-*`) here. The same token authenticates this API and AI Models / AI Runtime.\n"}},"schemas":{"ProjectResponse":{"type":"object","description":"Response payload containing project details","properties":{"id":{"type":"string","description":"Unique identifier for the project","readOnly":true},"name":{"type":"string","description":"Name of the project","minLength":1,"maxLength":100},"description":{"type":"string","description":"Project's description (if provided)"},"status":{"$ref":"#/components/schemas/ResourceState"}}},"ResourceState":{"type":"string","description":"The lifecycle state of a resource (user/organization/project)","enum":["active","suspended","archived","inactive"],"default":"active"},"ErrorResponse":{"type":"object","description":"Standard error response containing an error message","required":["code","message"],"properties":{"code":{"type":"string","description":"A short, machine-readable error code."},"message":{"type":"string","description":"A descriptive error message."}}}}},"paths":{"/api/v1/orgs/{org_id}/projects/{project_id}":{"get":{"operationId":"getProject","summary":"Get project in organization","description":"Retrieve project details by ID within an organization","tags":["Projects"],"parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","description":"Project ID","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"400":{"description":"Invalid organization ID or project ID format.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Insufficient permissions to view project details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Organization or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error occurred while retrieving project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Delete project in organization

> Delete project by ID within an organization

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"Projects","description":"Project management endpoints"}],"servers":[{"url":"https://api.ai.neevcloud.com/tenant","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Use the **`access_token`** from `POST /api/v1/auth/login` (same credentials as the console). In **Authorize**, paste **only that token** — do not prepend `Bearer`, and do not use inference keys (`sk-nc-*`) here. The same token authenticates this API and AI Models / AI Runtime.\n"}},"schemas":{"SuccessResponse":{"type":"object","description":"Generic success response containing a message","required":["message"],"properties":{"message":{"type":"string","description":"A descriptive success message"}}},"ErrorResponse":{"type":"object","description":"Standard error response containing an error message","required":["code","message"],"properties":{"code":{"type":"string","description":"A short, machine-readable error code."},"message":{"type":"string","description":"A descriptive error message."}}},"ProjectDeletionConflictResponse":{"type":"object","description":"Error response when project cannot be deleted due to existing resources","required":["code","message","details"],"properties":{"code":{"type":"string","description":"A short, machine-readable error code."},"message":{"type":"string","description":"A descriptive error message."},"details":{"type":"object","description":"Count of existing resources by type","properties":{"api_keys":{"type":"integer","description":"Number of API keys associated with the project"},"airuntimes":{"type":"integer","description":"Number of AI runtime instances associated with the project"},"storage_volumes":{"type":"integer","description":"Number of storage volumes associated with the project"}}}}}}},"paths":{"/api/v1/orgs/{org_id}/projects/{project_id}":{"delete":{"operationId":"deleteProject","summary":"Delete project in organization","description":"Delete project by ID within an organization","tags":["Projects"],"parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","description":"Project ID","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}}},"400":{"description":"Invalid organization ID or project ID format.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Insufficient permissions to delete project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Organization or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Project cannot be deleted because it has existing resources.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDeletionConflictResponse"}}}},"500":{"description":"Internal server error occurred while deleting project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Update project in organization

> Update project name and description (admin/owner only)

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"Projects","description":"Project management endpoints"}],"servers":[{"url":"https://api.ai.neevcloud.com/tenant","description":"Consolidated public API gateway"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Use the **`access_token`** from `POST /api/v1/auth/login` (same credentials as the console). In **Authorize**, paste **only that token** — do not prepend `Bearer`, and do not use inference keys (`sk-nc-*`) here. The same token authenticates this API and AI Models / AI Runtime.\n"}},"schemas":{"ProjectUpdateRequest":{"type":"object","description":"Request payload for updating a project. Both name and description are optional; at least one must be provided. Name can be omitted when only updating description. When name is provided it cannot be empty.","properties":{"name":{"type":"string","description":"Updated name of the project (1-100 characters). If omitted, the existing name is preserved.","minLength":1,"maxLength":100},"description":{"type":"string","description":"Updated description of the project. If omitted, the existing description is preserved. If provided as an empty string, the description will be cleared."}}},"ProjectResponse":{"type":"object","description":"Response payload containing project details","properties":{"id":{"type":"string","description":"Unique identifier for the project","readOnly":true},"name":{"type":"string","description":"Name of the project","minLength":1,"maxLength":100},"description":{"type":"string","description":"Project's description (if provided)"},"status":{"$ref":"#/components/schemas/ResourceState"}}},"ResourceState":{"type":"string","description":"The lifecycle state of a resource (user/organization/project)","enum":["active","suspended","archived","inactive"],"default":"active"},"ErrorResponse":{"type":"object","description":"Standard error response containing an error message","required":["code","message"],"properties":{"code":{"type":"string","description":"A short, machine-readable error code."},"message":{"type":"string","description":"A descriptive error message."}}}}},"paths":{"/api/v1/orgs/{org_id}/projects/{project_id}":{"patch":{"operationId":"updateProject","summary":"Update project in organization","description":"Update project name and description (admin/owner only)","tags":["Projects"],"parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}},{"name":"project_id","description":"Project ID","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdateRequest"}}}},"responses":{"200":{"description":"Project updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"400":{"description":"Invalid organization ID, project ID, or request body. At least one of name or description must be provided; both cannot be empty. When name is provided it cannot be empty.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Insufficient permissions to update project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Organization or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error occurred while updating project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ai.neevcloud.com/api-reference/tenant/projects.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
