> 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/api-keys.md).

# API Keys

API key management endpoints for projects

## List API Keys

> Retrieves a list of API keys for a specific project.

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"API Keys","description":"API key management endpoints for projects"}],"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":{"APIKeyListResponse":{"type":"object","description":"A response object containing a paginated list of API keys.","required":["data"],"properties":{"data":{"type":"array","description":"Array of API key objects","items":{"$ref":"#/components/schemas/APIKeyInfo"}},"pagination":{"$ref":"#/components/schemas/PaginationResponse"}}},"APIKeyInfo":{"type":"object","description":"API key information with masked key value for security.","required":["id","name","api_key_masked","created_at","resource_type"],"properties":{"id":{"type":"string","format":"uuid","description":"The unique identifier for the API key."},"name":{"type":"string","description":"The API key name."},"api_key_masked":{"type":"string","description":"The masked API key value showing only the first few and last few characters."},"created_at":{"type":"string","format":"date-time","description":"When the API key was created."},"resource_type":{"type":"string","description":"Resource type this API key is allowed to access."},"last_used_at":{"type":"string","format":"date-time","nullable":true,"description":"When the API key was last used."},"request_count":{"type":"integer","nullable":true,"description":"Number of requests made with this API key."}}},"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/{project_id}/api-keys":{"get":{"tags":["API Keys"],"summary":"List API Keys","description":"Retrieves a list of API keys for a specific project.","operationId":"listAPIKeys","parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"type":"string"},"description":"The project ID"},{"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 (defaults to 25 to show all API keys, as projects have a maximum of 25 API keys)","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"A list of API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyListResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The project was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"An unexpected internal server error occurred.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create API Key

> Creates a new API key for a specific project. The API key value will be auto-generated and returned only once in the response.

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"API Keys","description":"API key management endpoints for projects"}],"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":{"CreateAPIKeyRequest":{"type":"object","description":"Request to create a new API key.","required":["name","resource_type"],"properties":{"name":{"type":"string","minLength":1,"maxLength":255,"description":"A descriptive name for the API key."},"resource_type":{"type":"string","description":"Resource type this API key is allowed to access."}}},"CreateAPIKeyResponse":{"type":"object","description":"Response after creating an API key. The plaintext API key is only returned in this response and cannot be retrieved later.","required":["id","name","api_key","created_at","resource_type"],"properties":{"id":{"type":"string","format":"uuid","description":"The unique identifier for the API key."},"name":{"type":"string","description":"The API key name."},"api_key":{"type":"string","description":"The plaintext API key value. This is only returned once at creation time."},"created_at":{"type":"string","format":"date-time","description":"When the API key was created."},"resource_type":{"type":"string","description":"Resource type this API key is allowed to access."}}},"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}/api-keys":{"post":{"tags":["API Keys"],"summary":"Create API Key","description":"Creates a new API key for a specific project. The API key value will be auto-generated and returned only once in the response.","operationId":"createAPIKey","parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"type":"string"},"description":"The project ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}}},"responses":{"201":{"description":"The API key was created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"400":{"description":"The request payload is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The project was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"An unexpected internal server error occurred.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Delete API Key

> Soft deletes an API key by setting the deleted\_at timestamp. The API key can no longer be used for authentication after deletion.

```json
{"openapi":"3.0.3","info":{"title":"Tenant API","version":"0.1.0"},"tags":[{"name":"API Keys","description":"API key management endpoints for projects"}],"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":{"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}/api-keys/{api_key_id}":{"delete":{"tags":["API Keys"],"summary":"Delete API Key","description":"Soft deletes an API key by setting the deleted_at timestamp. The API key can no longer be used for authentication after deletion.","operationId":"deleteAPIKey","parameters":[{"name":"org_id","description":"Organization ID","in":"path","required":true,"schema":{"type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"type":"string"},"description":"The project ID"},{"in":"path","name":"api_key_id","required":true,"schema":{"type":"string","format":"uuid"},"description":"The API key ID"}],"responses":{"204":{"description":"The API key was deleted successfully."},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The API key was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"An unexpected internal server error occurred.","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/api-keys.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.
