---
title: "List the assistant's functions"
method: GET
path: "/api/projects/{id}/functions"
tags: ["Functions"]
---

# List the assistant's functions

`GET /api/projects/{id}/functions`

## Request

- Base URL: `https://dosai.pro`
- URL: `https://dosai.pro/api/projects/{id}/functions`
- Auth: HTTP bearer

Secret values inside `builtin_config` (tokens, API keys, passwords) are masked in the response and never leave the server.

## Response `200`

Functions.

- FunctionList
  - `pagination` Pagination: Offset mode returns page/limit/total/pages; keyset mode (deep lead pages) returns mode/limit/has_more/next_before. The functions list uses offset/limit/total/has_more instead of page numbers.
    - `mode` 'offset' | 'keyset'
    - `page` integer
    - `limit` integer
    - `total` integer
    - `pages` integer: Total number of pages in offset mode.
    - `offset` integer
    - `has_more` boolean
    - `next_before` string, date-time, nullable
  - `data` object[]
    - `id` string, uuid
    - `name` string
    - `description` string, nullable
    - `action_type` string
    - `is_active` boolean
    - `category` string, nullable
    - `secret_keys` string[]: Names of config keys whose values were masked.

## Other responses

- `401`: Missing, invalid, expired or revoked key.
- `403`: Not allowed. Distinguish by `code`: `INSUFFICIENT_SCOPE` (read-only key attempted a mutation), `API_KEY_PROJECT_SCOPE` (project-scoped key reached outside its project), `FORBIDDEN` (the user's role on this project is too low), `ACCOUNT_BANNED`.
- `404`: No such resource, or it belongs to another account.
- `429`: Too many requests. 120/min per key overall, plus a stricter per-endpoint budget. Retry after the number of seconds in Retry-After.

---

[API](https://skmtc.dev/dosai/apis/dos-ai-public-api.md) · [All operations](https://skmtc.dev/dosai/apis/dos-ai-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dosai/apis/dos-ai-public-api/revisions/38ce5f4e8f50?raw)
