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
—
freeteamenterprisedomainstring
—
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.
activearchivedlimitintegeroptional
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.
Triggersproject.created
Parameters
namestringrequired
Human-readable project name.
planenumoptional
—
freeteamenterprisesettingsobjectoptional
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
—
freeteamenterprisedomainstring
—
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.
Emitted byPOST Create a project
Payload
idstring
Unique project identifier.
namestring
—
planenum
—
freeteamenterprisedomainstring
—
createdAtstring
—
Example payload
{ "id": "prj_8Qa1zX", "name": "acme-docs", "plan": "team", "domain": "docs.acme.com", "createdAt": "2026-05-01T12:00:00Z" }