# Salfio Public API

Version `v1`

Servers: `https://api.salfio.com/v1`

## Operations

| Method | Path | Operation |
| --- | --- | --- |
| `POST` | `/cards/{cardValueId}/feedback` | [Report an issue with a card](./api/operations/createcardfeedback.md) |
| `GET` | `/clients` | [List clients](./api/operations/listclients.md) |
| `POST` | `/clients` | [Create a client](./api/operations/createclient.md) |
| `DELETE` | `/clients/{clientId}` | [Delete a client](./api/operations/deleteclient.md) |
| `GET` | `/clients/{clientId}` | [Get a client](./api/operations/getclient.md) |
| `PUT` | `/clients/{clientId}` | [Update a client](./api/operations/updateclient.md) |
| `GET` | `/clients/{clientId}/activities` | [List activities for a client](./api/operations/listactivities.md) |
| `POST` | `/clients/{clientId}/activities` | [Create a manual activity](./api/operations/createactivity.md) |
| `DELETE` | `/clients/{clientId}/activities/{activityId}` | [Delete or archive an activity](./api/operations/deleteorarchiveactivity.md) |
| `GET` | `/clients/{clientId}/activities/{activityId}` | [Get an activity](./api/operations/getactivity.md) |
| `PUT` | `/clients/{clientId}/activities/{activityId}` | [Update a manual activity](./api/operations/updateactivity.md) |
| `GET` | `/clients/{clientId}/assignment-rules` | [List a client's assignment rules](./api/operations/getassignmentrules.md) |
| `PUT` | `/clients/{clientId}/assignment-rules` | [Replace a client's assignment rules](./api/operations/setassignmentrules.md) |
| `GET` | `/clients/{clientId}/cards` | [List a client's cards](./api/operations/listclientcards.md) |
| `POST` | `/clients/{clientId}/notes` | [Create a note on a client](./api/operations/createnote.md) |
| `GET` | `/docs` | [Render the Public API v1 documentation (Scalar)](./api/operations/getdocspage.md) |
| `GET` | `/health` | [Authenticated health check](./api/operations/gethealth.md) |
| `GET` | `/integrations` | [List the organization's integrations](./api/operations/listintegrations.md) |
| `GET` | `/integrations/{integrationId}/channels` | [List a Slack integration's channels](./api/operations/listintegrationchannels.md) |
| `GET` | `/openapi.yaml` | [Fetch the Public API v1 OpenAPI specification](./api/operations/getopenapispec.md) |
| `GET` | `/organization` | [Get the caller's organization](./api/operations/getorganization.md) |
| `PUT` | `/organization` | [Update the caller's organization](./api/operations/updateorganization.md) |
| `GET` | `/users` | [List organization users](./api/operations/listusers.md) |
| `GET` | `/users/{userId}` | [Get a user](./api/operations/getuser.md) |
| `PUT` | `/users/{userId}` | [Update a user's profile](./api/operations/updateuser.md) |

## Related pages

- [activities](./api/operations/tags/activities.md)
- [assignment-rules](./api/operations/tags/assignment-rules.md)
- [Authenticated health check](./api/operations/gethealth.md)
- [cards](./api/operations/tags/cards.md)
- [clients](./api/operations/tags/clients.md)
- [Create a client](./api/operations/createclient.md)
- [Create a manual activity](./api/operations/createactivity.md)
- [Create a note on a client](./api/operations/createnote.md)
- [Delete a client](./api/operations/deleteclient.md)
- [Delete or archive an activity](./api/operations/deleteorarchiveactivity.md)

# Agent Instructions

This portal answers questions programmatically. To receive a synthesized,
source-cited answer instead of crawling page by page, append the `?ask=`
query parameter to any page URL on this site:

    /guides/quickstart?ask=how+do+I+authenticate

Optional parameters:

- `&goal=<what-you-are-trying-to-do>` steers the answer toward your
  objective (e.g. `&goal=write+a+python+client`).
- `&version=<label>` scopes the answer to a mounted version when the
  portal publishes more than one.

The response is `text/markdown`: the answer followed by a `# Sources` list
of the portal pages it was grounded in. Status codes are the contract:

- `200` — the answer; `402` — the portal owner’s plan or answer credits are
  exhausted (surface this to your operator; do NOT retry); `429` — you are
  rate-limited; back off for the `Retry-After` seconds; `503` — the answer
  lane is temporarily unavailable; fall back to crawling the `.md` pages.

For the full corpus map read `llms.txt` at the site root; for the tool
surface (search + page fetch as MCP tools) see `/mcp`.
