Syntext DOCS
Get Started
API Create Project
POST/v1/projects

Create Project

Create a new documentation project in your organization.

Request Body

Project display name. Used in the dashboard and as the default site title.

URL-friendly identifier. Auto-generated from name if not provided. Used in the docs URL: {slug}-docs.syntext.dev.

Brief project description. Shown in the dashboard.

GitHub repository URL to connect. Example: https://github.com/acme/docs.

Branch to build from. Defaults to main.

Project settings.

Enable AI assistant for this project.

Enable full-text search.

Enable usage analytics.

Response

Returns the created project object.

Example

curl -X POST https://api.syntext.dev/v1/projects \
-H "Authorization: Bearer stx_abc12345_..." \
-H "Content-Type: application/json" \
-d '{
"name": "API Documentation",
"description": "REST API reference for our platform",
"repoUrl": "https://github.com/acme/api-docs",
"repoBranch": "main"
}'
import { Syntext } from '@syntext/sdk'

const client = new Syntext('stx_abc12345_...')

const project = await client.projects.create({
name: 'API Documentation',
description: 'REST API reference for our platform',
repoUrl: 'https://github.com/acme/api-docs',
repoBranch: 'main',
})
from syntext import Syntext

client = Syntext("stx_abc12345_...")

project = client.projects.create(
name="API Documentation",
description="REST API reference for our platform",
repo_url="https://github.com/acme/api-docs",
repo_branch="main",
)

Response

{
  "data": {
    "id": "prj_xyz789",
    "name": "API Documentation",
    "slug": "api-documentation",
    "description": "REST API reference for our platform",
    "url": "https://api-documentation-docs.syntext.dev",
    "repoUrl": "https://github.com/acme/api-docs",
    "repoBranch": "main",
    "settings": {
      "aiEnabled": true,
      "searchEnabled": true,
      "analyticsEnabled": true
    },
    "createdAt": "2026-06-28T10:30:00Z",
    "updatedAt": "2026-06-28T10:30:00Z"
  }
}

Error Responses

400 Bad Request

Returned when required fields are missing or have invalid values.

{
  "error": {
    "code": "invalid_request",
    "message": "Required field missing or invalid value",
    "details": {
      "field": "name",
      "issue": "Name is required"
    }
  }
}

409 Conflict

Returned when a project with this slug already exists.

{
  "error": {
    "code": "conflict",
    "message": "Project with this slug already exists"
  }
}

402 Payment Required

Returned when the organization has reached its project limit.

{
  "error": {
    "code": "quota_exceeded",
    "message": "Organization has reached project limit. Upgrade your plan to create more projects."
  }
}
Assistant
Responses are generated using AI and may contain mistakes.

Ask me anything about the documentation.

ESC