---
title: "Get project details"
method: GET
path: "/api/v2/projects/{slug}/"
tags: ["Projects"]
---

# Get project details

`GET /api/v2/projects/{slug}/`

## Request

- Base URL: `https://app.biel.ai`
- URL: `https://app.biel.ai/api/v2/projects/{slug}/`
- Auth: one of:
  - API key in header `Authorization`
  - none

Retrieve project settings, filters, and metadata.

**Required permission:** `projects_read` (private projects only).

## Path parameters

- `slug` string, required

## Response `200`

Project details retrieved successfully

- Project
  - `slug` string, required: URL-safe project identifier. Auto-generated on creation and immutable thereafter.
  - `uuid` string, uuid: Unique project record identifier. Use `slug` for API paths and the embeddable widget's `project` attribute.
  - `name` string, required: Human-readable project name.
  - `is_private` boolean, required: Whether the project is private. Private projects require an API key for read operations.
  - `created_at` string, date-time: ISO-8601 timestamp of project creation.
  - `updated_at` string, date-time: ISO-8601 timestamp of last project update.
  - `whitelabel` boolean, required: Whether the 'Powered by Biel.ai' branding is hidden. Requires a Professional plan or above.
  - `config` ProjectConfig, required: Project configuration, grouped by feature. Every group is optional: send only the groups and fields you want to change, and everything else keeps its current value. Read-only fields are returned in responses but rejected in requests. Sending one back, or misspelling a field name, returns a validation error naming the field, so a write that would not have taken effect fails loudly instead of appearing to succeed.
    - `chat` ChatSettings: Chat-related project configuration.
      - `initial_message` string: Greeting message shown when users open the chat.
      - `suggested_questions` string[]: Pre-configured suggested questions shown to users when they open the chat.
      - `think_mode` boolean: Whether reasoning mode is enabled.
      - `actions` Action[]: Call-to-action buttons configured for the project, rendered by the chat widget.
        - `name` string, required: Identifier of the action, unique within the project.
        - `button_text` string, required: Label shown on the button.
        - `url` string, uri, required: Destination the button links to.
    - `search` SearchSettings: Search-related project configuration.
      - `filters` Filter[]: Search filters configured for the project.
        - `title` string, required: Display title of the filter.
    - `mcp` MCPSettings: MCP server configuration.
      - `enabled` boolean: Whether MCP server integration is enabled.
      - `webmcp_enabled` boolean: WebMCP browser-tool access. GET responses return the effective value, which requires this preference, MCP enabled, and current MCP plan access. PATCH stores the preference without overriding those gates. The stored preference defaults to true for existing and new projects. Set it to false to disable WebMCP while keeping hosted MCP enabled.
      - `server_name` string: Display name of the MCP server. Defaults to the project name.
      - `metadata_tag` string: Tag used to identify MCP-originated conversations in analytics.
    - `prompt` PromptSettings: Prompt customization. Use these settings to shape the assistant's behavior.
      - `use_default` boolean: Whether the built-in system prompt is used. Setting this to `false` without providing `extend` is a validation error.
      - `version` 'v1' | 'v2' | 'v3': Version of the built-in assistant prompt.
      - `extend` string, nullable: Custom instructions appended to (or, when `use_default` is `false`, replacing) the built-in prompt.
  - `last_sync` SyncSummary: Compact summary of a sync run, embedded in the project's `last_sync` field for lightweight polling.
    - `uuid` string, uuid, required: UUID of the sync run.
    - `status` 'running' | 'success' | 'error' | 'warning' | 'canceled', required: - `running`: crawl is in progress. - `success`: crawl finished without errors. - `warning`: crawl finished with non-fatal warnings (some URLs may have failed). - `error`: crawl failed. - `canceled`: a newer [`POST /api/v2/projects/{slug}/sync/`](/api/sync-project) call superseded this run.
    - `started_at` string, date-time, required: ISO-8601 timestamp of when the run started.
    - `finished_at` string, date-time, nullable: ISO-8601 timestamp of when the run finished, or `null` while `status` is `running`.
    - `total_sources` integer, required: Total number of sources processed in this run, including expanded entries (for example, individual files of a repository).

## Other responses

- `403`: Forbidden. Missing permissions.
- `404`: Resource not found.

---

[API](https://skmtc.dev/biel/apis/biel-ai-api.md) · [All operations](https://skmtc.dev/biel/apis/biel-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/biel/apis/biel-ai-api/revisions/ac7034d82696?raw)
