---
title: Get Project
protocol: rest
method: GET
endpoint: /v1/projects/{projectId}
description: "Retrieve a single project by ID"
---

# Get Project

Retrieve details for a single documentation project.

<Endpoint method="GET" path="/v1/projects/{projectId}" />

## Path Parameters

<ParamField path="projectId" type="string" required>
  The project ID (e.g., `prj_abc123`).
</ParamField>

## Response

<ResponseField name="data" type="object">
  The project object.

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      Unique project identifier.
    </ResponseField>

    <ResponseField name="name" type="string">
      Project display name.
    </ResponseField>

    <ResponseField name="slug" type="string">
      URL-friendly identifier.
    </ResponseField>

    <ResponseField name="description" type="string">
      Project description.
    </ResponseField>

    <ResponseField name="url" type="string">
      Live documentation URL.
    </ResponseField>

    <ResponseField name="customDomain" type="string | null">
      Custom domain if configured.
    </ResponseField>

    <ResponseField name="repoUrl" type="string | null">
      Connected GitHub repository URL.
    </ResponseField>

    <ResponseField name="repoBranch" type="string | null">
      Branch to build from.
    </ResponseField>

    <ResponseField name="settings" type="object">
      Project settings.

      <Expandable title="properties">
        <ResponseField name="aiEnabled" type="boolean">
          Whether AI assistant is enabled.
        </ResponseField>

        <ResponseField name="searchEnabled" type="boolean">
          Whether search is enabled.
        </ResponseField>

        <ResponseField name="analyticsEnabled" type="boolean">
          Whether analytics are enabled.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      ISO 8601 creation timestamp.
    </ResponseField>

    <ResponseField name="updatedAt" type="string">
      ISO 8601 last update timestamp.
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

<CodeGroup>
```bash cURL
curl https://api.syntext.dev/v1/projects/prj_abc123 \
  -H "Authorization: Bearer stx_abc12345_..."
```

```typescript SDK
import { Syntext } from '@syntext/sdk'

const client = new Syntext('stx_abc12345_...')
const project = await client.projects.get('prj_abc123')
```

```python Python
from syntext import Syntext

client = Syntext("stx_abc12345_...")
project = client.projects.get("prj_abc123")
```
</CodeGroup>

### Response

```json
{
  "data": {
    "id": "prj_abc123",
    "name": "API Docs",
    "slug": "api-docs",
    "description": "Documentation for our REST API",
    "url": "https://api-docs-docs.syntext.dev",
    "customDomain": "docs.example.com",
    "repoUrl": "https://github.com/acme/api-docs",
    "repoBranch": "main",
    "settings": {
      "aiEnabled": true,
      "searchEnabled": true,
      "analyticsEnabled": true
    },
    "createdAt": "2026-01-15T12:00:00Z",
    "updatedAt": "2026-01-20T08:30:00Z"
  }
}
```

## Error Responses

### 404 Not Found

Returned when the project does not exist or you don't have access.

```json
{
  "error": {
    "code": "not_found",
    "message": "Project does not exist or you don't have access"
  }
}
```

### 401 Unauthorized

Returned when authentication is missing or invalid.

```json
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid or missing API key"
  }
}
```
