Projects

Project objects represent a documentation site on your account. Create one to get a build, then deploy it, list your projects, or fetch a single project by id. Projects are the top-level resource everything else hangs off.

The slug is derived from the project name and must be unique per account.
Was this section helpful?
List projects
GET /projects
Create a project
POST /projects
Get a project
GET /projects/{projectId}
project.archived
A project was archived
project.created
A new project was created.

The Project object

Returned by the projects endpoints.

Attributes
idstring
Unique project identifier.
namestring
planenum
freeteamenterprise
domainstring
createdAtstring
The Project object
{
  "id": "prj_8Qa1zX",
  "name": "acme-docs",
  "plan": "team",
  "domain": "docs.acme.com",
  "createdAt": "2026-05-01T12:00:00Z"
}

List projects

GET https://api.markline.dev/projects

Return a paginated list of projects on your account.

Query parameters
statusenumoptional
Filter by lifecycle status.activearchived
limitintegeroptional
Maximum number of projects to return (1–100).
curl https://api.markline.dev/projects \
  -H "Authorization: Bearer sk_live_••••"
const project = await markline.projects.list()
project = markline.projects.list()
project, err := client.Projects.List(ctx, nil)
Response 200 A list of projects.
[
  {
    "id": "prj_8Qa1zX",
    "name": "acme-docs",
    "plan": "team",
    "domain": "docs.acme.com",
    "createdAt": "2026-05-01T12:00:00Z"
  }
]

Create a project

POST https://api.markline.dev/projects

Create a new documentation project. The slug is derived from the name.

Parameters
namestringrequired
Human-readable project name.
planenumoptional
freeteamenterprise
settingsobjectoptional
Optional initial settings.
curl https://api.markline.dev/projects \
  -H "Authorization: Bearer sk_live_••••" \
  -d name=acme-docs \
  -d plan=free \
  -d settings=value
const project = await markline.projects.create({
  name: 'acme-docs',
  plan: 'free',
  settings: 'value',
})
project = markline.projects.create(
    name="acme-docs",
    plan="free",
    settings="value",
)
project, err := client.Projects.Create(ctx, &markline.ProjectParams{
    Name: markline.String("acme-docs"),
    Plan: markline.String("free"),
    Settings: markline.String("value"),
})
Response 201 The created project.
{
  "id": "prj_8Qa1zX",
  "name": "acme-docs",
  "plan": "team",
  "domain": "docs.acme.com",
  "createdAt": "2026-05-01T12:00:00Z"
}

Get a project

GET https://api.markline.dev/projects/{projectId}

Retrieve a single project by id.

Path parameters
projectIdstringrequired
The project's unique identifier.
curl https://api.markline.dev/projects/prj_8Qa1zX \
  -H "Authorization: Bearer sk_live_••••"
const project = await markline.projects.retrieve('prj_8Qa1zX')
project = markline.projects.retrieve("prj_8Qa1zX")
project, err := client.Projects.Retrieve(ctx, "prj_8Qa1zX")
Response
{
  "id": "prj_8Qa1zX",
  "name": "acme-docs",
  "plan": "team",
  "domain": "docs.acme.com",
  "createdAt": "2026-05-01T12:00:00Z"
}
{
  "code": "not_found",
  "message": "No project with that id."
}

Sent when a project is archived and its deployments are taken offline.

Payload
idstring
Unique project identifier.
namestring
planenum
freeteamenterprise
domainstring
createdAtstring
Example payload
{
  "id": "prj_8Qa1zX",
  "name": "acme-docs",
  "plan": "team",
  "domain": "docs.acme.com",
  "createdAt": "2026-05-01T12:00:00Z"
}

Emitted once the project is provisioned and ready to receive deployments.

Payload
idstring
Unique project identifier.
namestring
planenum
freeteamenterprise
domainstring
createdAtstring
Example payload
{
  "id": "prj_8Qa1zX",
  "name": "acme-docs",
  "plan": "team",
  "domain": "docs.acme.com",
  "createdAt": "2026-05-01T12:00:00Z"
}