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

# Models

## The Project object

```json
{"openapi":"3.1.0","info":{"title":"Spice Cloud Control-Plane API","version":"v1"},"components":{"schemas":{"Project":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the project"},"name":{"type":"string","description":"Name of the project"},"kind":{"type":"string","enum":["managed","standalone","byoc"],"description":"Resolved project hosting model"},"description":{"type":"string","nullable":true,"description":"Description of the project"},"visibility":{"type":"string","enum":["public","private"],"description":"Visibility setting for the project"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the project was created"},"cname":{"type":"string","nullable":true,"description":"Region identifier"},"cluster_name":{"type":"string","nullable":true,"description":"Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster."},"endpoint":{"type":"string","nullable":true,"description":"The data-plane endpoint the project connects to, or null before a standalone instance is attached."},"tags":{"type":"object","additionalProperties":{"type":"string"},"nullable":true,"description":"Key-value tags for the project"}}}}}}
```

## The ProjectWithConfig object

```json
{"openapi":"3.1.0","info":{"title":"Spice Cloud Control-Plane API","version":"v1"},"components":{"schemas":{"ProjectWithConfig":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the project"},"name":{"type":"string","description":"Name of the project"},"kind":{"type":"string","enum":["managed","standalone","byoc"],"description":"Resolved project hosting model"},"description":{"type":"string","nullable":true,"description":"Description of the project"},"visibility":{"type":"string","enum":["public","private"],"description":"Visibility setting for the project"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the project was created"},"cname":{"type":"string","nullable":true,"description":"Region identifier"},"cluster_name":{"type":"string","nullable":true,"description":"Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster."},"endpoint":{"type":"string","nullable":true,"description":"The data-plane endpoint the project connects to, or null before a standalone instance is attached."},"production_branch":{"type":"string","nullable":true,"description":"Production branch for the project"},"api_key":{"type":"string","deprecated":true,"description":"Deprecated. Use the API Keys endpoints instead."},"tags":{"type":"object","additionalProperties":{"type":"string"},"nullable":true,"description":"Key-value tags for the project"},"paused_at":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the project was paused; null while running"},"warning":{"type":"string","nullable":true,"description":"Present when the project was created but initial configuration could not be applied"},"config":{"type":"object","nullable":true,"description":"Runtime configuration; null for an unattached standalone project.","properties":{"spicepod":{"type":"object","nullable":true,"description":"Spicepod configuration"},"registry":{"type":"string","nullable":true,"description":"Container registry for the runtime image"},"image_tag":{"type":"string","nullable":true,"description":"Runtime image tag"},"update_channel":{"type":"string","enum":["stable","preview","nightly"],"nullable":true,"description":"Update channel for the runtime"},"replicas":{"type":"integer","description":"Number of replicas"},"resources":{"type":"object","nullable":true,"description":"Resource requests and limits for the project container","properties":{"limits":{"type":"object","properties":{"cpu":{"type":"string","description":"Whole-number vCPU limit, or '-' for no CPU limit"},"memory":{"type":"string","description":"Memory limit in Gi (for example, 16Gi)"},"ephemeral-storage":{"type":"string"}}},"requests":{"type":"object","properties":{"cpu":{"type":"string","description":"CPU request. Minimum 100 millicores (for example, 100m or 0.1)."},"memory":{"type":"string","description":"Memory request. Minimum 192Mi."}}}}},"executor":{"type":"object","nullable":true,"description":"Executor container configuration","properties":{"replicas":{"type":"integer","description":"Number of executor replicas"},"resources":{"type":"object","description":"Resource requests and limits for the executor container","properties":{"limits":{"type":"object","properties":{"cpu":{"type":"string","description":"Whole-number vCPU limit, or '-' for no CPU limit"},"memory":{"type":"string","description":"Memory limit in Gi (for example, 16Gi)"},"ephemeral-storage":{"type":"string"}}},"requests":{"type":"object","properties":{"cpu":{"type":"string","description":"CPU request. Minimum 100 millicores (for example, 100m or 0.1)."},"memory":{"type":"string","description":"Memory request. Minimum 192Mi."}}}}}}},"region":{"type":"string","nullable":true,"description":"Cloud region code (e.g., us-east-1)"},"node_group":{"type":"string","nullable":true,"description":"Node group for scheduling the project runtime"},"storage_claim_size_gb":{"type":"number","nullable":true,"description":"Storage claim size in GB"}}}}}}}}
```

## The Secret object

```json
{"openapi":"3.1.0","info":{"title":"Spice Cloud Control-Plane API","version":"v1"},"components":{"schemas":{"Secret":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the secret"},"name":{"type":"string","description":"Name of the secret"},"value":{"type":"string","description":"Always masked with asterisks"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the secret was created"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the secret was last updated"}}}}}}
```

## The Deployment object

```json
{"openapi":"3.1.0","info":{"title":"Spice Cloud Control-Plane API","version":"v1"},"components":{"schemas":{"Deployment":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the deployment"},"status":{"type":"string","enum":["queued","in_progress","succeeded","failed","created"],"description":"Current status of the deployment"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the deployment was created"},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp when the deployment was last updated"},"image_tag":{"type":"string","nullable":true,"description":"Runtime image tag used for this deployment"},"replicas":{"type":"integer","description":"Number of replicas"},"branch":{"type":"string","nullable":true,"description":"Git branch name"},"commit_sha":{"type":"string","nullable":true,"description":"Git commit SHA"},"commit_message":{"type":"string","nullable":true,"description":"Git commit message"},"error_code":{"type":"string","nullable":true,"description":"Set with error_message on failed and on in_progress while Cloud is retrying a scheduling block. Null on succeeded, on ordinary waiting in_progress, and on writers that predated this column. Older failed rows may still have a message with a null code."},"error_message":{"type":"string","nullable":true,"description":"Catalog copy for the current error_code. Older failed rows may still have a message with a null error_code."},"creation_source":{"type":"string","nullable":true,"description":"Source that triggered the deployment"},"created_by":{"type":"integer","nullable":true,"description":"User ID who created the deployment"}}}}}}
```

## The ApiKeys object

```json
{"openapi":"3.1.0","info":{"title":"Spice Cloud Control-Plane API","version":"v1"},"components":{"schemas":{"ApiKeys":{"type":"object","properties":{"api_key":{"type":"string","nullable":true,"description":"Primary API key"},"api_key_2":{"type":"string","nullable":true,"description":"Secondary API key (for key rotation)"}}}}}}
```

## The ApiKeysRegenerated object

```json
{"openapi":"3.1.0","info":{"title":"Spice Cloud Control-Plane API","version":"v1"},"components":{"schemas":{"ApiKeysRegenerated":{"type":"object","properties":{"api_key":{"type":"string","nullable":true,"description":"Primary API key"},"api_key_2":{"type":"string","nullable":true,"description":"Secondary API key"},"regenerated_key":{"type":"integer","enum":[0,1,2],"description":"Which key was regenerated (0 = both, 1 = primary, 2 = secondary)"}}}}}}
```

## The Reaction object

```json
{"openapi":"3.1.0","info":{"title":"Spice Cloud Control-Plane API","version":"v1"},"components":{"schemas":{"Reaction":{"type":"object","description":"A data reaction, as returned by the list, get and create operations. Every property below is always present; a nullable one carries null rather than being omitted. Fields not listed here are internal to the platform and are not part of the contract.","required":["id","org_id","app_id","created_by","name","description","kind","status","template_id","spec","target","recipient_user_ids","last_fired_at","last_resolved_at","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Identifier of the reaction. This is the value the delete operation takes."},"org_id":{"type":"integer","description":"Organization that owns the project"},"app_id":{"type":"integer","description":"Project the reaction belongs to"},"created_by":{"type":"integer","nullable":true,"description":"User who created the reaction, when it was created by a user credential"},"name":{"type":"string","description":"Display name, unique case-insensitively among the project's live monitors and data reactions"},"description":{"type":"string","nullable":true},"kind":{"type":"string","enum":["data"],"description":"Discriminates a data reaction from a project monitor. The reactions endpoints only ever return `data`."},"status":{"type":"string","description":"Whether the reaction is evaluating","enum":["active","disabled"]},"template_id":{"type":"string","description":"Template the reaction was created from"},"spec":{"type":"object","description":"Reaction parameters, normalized for the response: a reaction whose model transform is still held on `target` is returned with that transform copied into `spec.model`. Which properties are meaningful is decided by `template_id` — see the create operation's request body for the properties each template reads."},"target":{"description":"The reaction sink. An HTTP target's `token` is write-only and is never returned.","discriminator":{"propertyName":"type"},"oneOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["email"]},"recipientUserIds":{"type":"array","items":{"type":"integer"}},"emails":{"type":"array","items":{"type":"string","format":"email"}}}},{"type":"object","required":["type","url"],"properties":{"type":{"type":"string","enum":["http"]},"url":{"type":"string","format":"uri"},"method":{"type":"string","enum":["POST","PUT","PATCH"]}}}]},"recipient_user_ids":{"type":"array","description":"Organization members emailed when the reaction fires. Always empty for `http` targets, and for `email` targets addressed only by `emails`. When a created `email` target named no recipients at all, the API stores the creating user.","items":{"type":"integer"}},"last_fired_at":{"type":"string","format":"date-time","nullable":true,"description":"When the reaction last fired, or null if it never has"},"last_resolved_at":{"type":"string","format":"date-time","nullable":true,"description":"When the reaction last resolved, or null if it never has"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}
```


---

# 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.spice.ai/api/management-api/management/models.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.
