canonical: https://jentic.com/apis/saltproject.io/saltproject

# Saltproject Salt REST CherryPy API

Salt's REST API interface via the CherryPy framework, providing HTTP access to Salt's execution, runner, and wheel modules. The API exposes 17 endpoints secured with apiKey authentication.

## For AI agents

Programmatically execute salt commands via rpc-style requests, get API documentation and navigation links. Covers 17 operations with apiKey authentication.

## Scope

Does not handle payments, communications, or crm - use for developer tools only.

## Capabilities

- Execute Salt commands via RPC-style requests
- Get API documentation and navigation links
- Authenticate and obtain session token
- Display login interface
- Invalidate current session
- List all minions or get minion details

## Use cases

### Developer Tools Operations

Use the Salt REST CherryPy API to perform developer tools operations programmatically. The API provides 17 endpoints covering core functionality including execute salt commands via rpc-style requests, get API documentation and navigation links, authenticate and obtain session token.

Example prompt: Call POST / to execute salt commands via rpc-style requests

### Automated Events Management

Automate events operations by combining multiple Salt REST CherryPy API endpoints. Agents can get API documentation and navigation links and then authenticate and obtain session token in a single workflow.

Example prompt: Call GET / to get API documentation and navigation links, then verify the result

### AI Agent Integration via Jentic

AI agents discover and call Salt REST CherryPy API endpoints through Jentic without managing credentials directly. An agent searches for the required operation by intent, receives the matching endpoint schema, and executes the call with Jentic-managed authentication. This eliminates the need to read API documentation or handle apiKey tokens manually.

Example prompt: Search Jentic for 'execute salt commands via rpc-style requests', load the operation schema, and execute with Jentic-managed credentials

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/` | Execute Salt commands via RPC-style requests |
| GET | `/` | Get API documentation and navigation links |
| POST | `/login` | Authenticate and obtain session token |
| GET | `/login` | Display login interface |
| POST | `/logout` | Invalidate current session |
| POST | `/minions` | Execute an async command on minions |
| GET | `/minions` | List all minions or get minion details |
| GET | `/minions/{mid}` | Get details for a specific minion |

## Key resources

- **Events** — Operations for events
- **Hook** — Operations for hook
- **Jobs** — Operations for jobs
- **Keys** — Operations for keys
- **Login** — Operations for login

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 61 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 75 / 100
  - Developer Experience & Jentic Compatibility: 62 / 100
  - AI-Readiness & Agent Experience: 45 / 100
  - Agent Usability: 94 / 100
  - Security: 50 / 100
  - AI Discoverability: 67 / 100
- **View full report:** https://jentic.com/apis/saltproject.io/saltproject/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring the Salt REST CherryPy API by hand means logging in for an X-Auth-Token, pointing requests at your own saltmaster host and port, and handling session expiry and retries yourself. Through Jentic you install once, import Salt from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** Salt puts the minion id in the URL path (`/minions/{mid}`), so a rule can pin your agent to specific minions: it can read the ones you allow and nothing else. You choose the operations it may call, so command execution like posting to the run endpoint is not included unless you add it.
- **Credential handling:** Your Salt credentials are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list minions' or 'get minion details', and Jentic returns the matching Salt operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Github** — Alternative developer tools API
- **Gitlab** — Alternative developer tools API

## FAQ

### What authentication does the Salt REST CherryPy API use?

The Salt REST CherryPy API uses an API key passed in the `X-Auth-Token` header. Through Jentic, these credentials are stored encrypted in your Jentic One instance and injected at execution time, so raw secrets never enter the agent context.

### Can I execute salt commands via rpc-style requests with the Salt REST CherryPy API?

Yes. Use the POST / endpoint. The API returns structured JSON responses that agents can parse and act on directly.

### What are the rate limits for the Salt REST CherryPy API?

Rate limits are not specified in the OpenAPI spec. Check the vendor documentation for current limits. Through Jentic, rate limiting is handled automatically with retry logic built into the execution layer.

### How do I execute salt commands via rpc-style requests through Jentic?

Install the Jentic SDK with pip install jentic, authenticate through Jentic One, the self-hosted execution layer, then search for 'execute salt commands via rpc-style requests'. Jentic returns the matching Salt REST CherryPy API operation with its input schema. Load the schema and execute the call - credentials are injected automatically.

### How many endpoints does the Salt REST CherryPy API have?

The Salt REST CherryPy API exposes 17 endpoints covering events, hook, jobs operations.

### Can I limit what my agent is allowed to do with the Salt REST CherryPy API?

Yes. Jentic One is self-hosted by you, so your own rules decide which Salt operations and credentials the agent may use. Because Salt puts the minion id in the URL path (`/minions/{mid}`), you can pin the agent to specific minions so it reads only the ones you allow and nothing else. You choose the operations it may call, so command execution such as posting to the run endpoint is excluded unless you add it.
