Projects
Create a project
Create a new docs project under the authenticated organization. The slug must be unique across the platform — pick something specific to your brand.
Create a project
curl --request POST \
--url 'https://api.nookdocs.com/v1/projects' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<string>",
"slug": "<string>",
"github_repo": "<string>"
}'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"status": "pending",
"created_at": "2023-11-07T05:31:56Z",
"github_repo": "<string>",
"custom_domain": "<string>",
"github_branch": "main",
"last_deploy_at": "2023-11-07T05:31:56Z"
}Authorizations
AuthorizationstringheaderrequiredAPI key issued from your dashboard (Settings → API Keys). Format: nook_... — pass as Authorization: Bearer nook_.... Keys carry scopes (projects:read/write, pages:read, deployments:read/trigger, analytics:read) — calls without the required scope return 403.
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Request bodyapplication/json
namestringbodyrequiredDisplay name for the project (1–80 characters)
slugstringbodyrequiredURL slug — used as the subdomain. Lowercase letters, numbers, and hyphens only.
github_repostringbodyOptional `owner/name` GitHub repo to auto-connect after creation
Response
Project created
idstring (uuid)requiredUnique project identifier
namestringrequiredHuman-readable project name
slugstringrequiredURL slug — used as the subdomain `{slug}.nookdocs.site`
statusenum<string>requiredCurrent project status
options:
pendingbuildingactivefailedcreated_atstring (date-time)requiredProject creation timestamp
github_repostringConnected GitHub repo in `owner/name` format
custom_domainstringCustom domain (e.g. `docs.acme.com`) if configured
github_branchstringBranch synced for deployments
last_deploy_atstring (date-time)Timestamp of the most recent successful deployment
errorstringrequiredMachine-readable error code (e.g. `invalid_request`, `unauthorized`, `not_found`)
messagestringrequiredHuman-readable error description
errorstringrequiredMachine-readable error code (e.g. `invalid_request`, `unauthorized`, `not_found`)
messagestringrequiredHuman-readable error description
errorstringrequiredMachine-readable error code (e.g. `invalid_request`, `unauthorized`, `not_found`)
messagestringrequiredHuman-readable error description