Projects API

API endpoints for managing projects in Moqup.

The Projects API allows you to create, read, update, and delete projects programmatically.

Endpoints

MethodEndpointDescription
GET/projectsList all projects
POST/projectsCreate project
GET/projects/{id}Get project
PATCH/projects/{id}Update project
DELETE/projects/{id}Delete project

List Projects

Request

bash
GET /v1/projects
Authorization: Bearer YOUR_API_KEY

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
per_pageintegerItems per page (default: 20, max: 100)
statusstringFilter by status: active, archived
client_idstringFilter by client ID
searchstringSearch by project name

Response

json
{
  "data": [
    {
      "id": "abc123-def456",
      "name": "Website Redesign",
      "workspace_id": "ws_123",
      "client_id": "client_xyz",
      "client_name": "Acme Corp",
      "client_email": "contact@acme.com",
      "status": "active",
      "notify_client_on_upload": true,
      "created_at": "2025-01-01T10:00:00Z",
      "updated_at": "2025-01-10T14:30:00Z"
    }
  ],
  "meta": {
    "total": 45,
    "page": 1,
    "perPage": 20,
    "hasMore": true
  }
}

Create Project

Request

bash
POST /v1/projects
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "name": "New Project",
  "client_id": "client_xyz",
  "client_name": "Acme Corp",
  "client_email": "contact@acme.com",
  "notify_client_on_upload": true
}

Parameters

FieldTypeRequiredDescription
namestringYesProject name
client_idstringNoAssociated client ID
client_namestringNoClient name (if no client_id)
client_emailstringNoClient email for notifications
notify_client_on_uploadbooleanNoNotify client on file upload (default: true)

Response

json
{
  "data": {
    "id": "abc123-def456",
    "name": "New Project",
    "workspace_id": "ws_123",
    "client_id": "client_xyz",
    "client_name": "Acme Corp",
    "client_email": "contact@acme.com",
    "status": "active",
    "notify_client_on_upload": true,
    "created_at": "2025-01-10T15:00:00Z",
    "updated_at": "2025-01-10T15:00:00Z"
  }
}

Get Project

Request

bash
GET /v1/projects/{id}
Authorization: Bearer YOUR_API_KEY

Response

json
{
  "data": {
    "id": "abc123-def456",
    "name": "Website Redesign",
    "workspace_id": "ws_123",
    "client_id": "client_xyz",
    "status": "active",
    "notify_client_on_upload": true,
    "client": {
      "id": "client_xyz",
      "name": "Acme Corp",
      "email": "contact@acme.com"
    },
    "created_at": "2025-01-01T10:00:00Z",
    "updated_at": "2025-01-10T14:30:00Z"
  }
}

The response includes the associated client object when a client_id is set.

Update Project

Request

bash
PATCH /v1/projects/{id}
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "name": "Updated Project Name",
  "status": "active"
}

Parameters

FieldTypeDescription
namestringUpdate project name
client_idstringUpdate associated client
client_namestringUpdate client name
client_emailstringUpdate client email
notify_client_on_uploadbooleanUpdate notification setting
statusstringactive or archived
share_passwordstringSet password for share link

Response

json
{
  "data": {
    "id": "abc123-def456",
    "name": "Updated Project Name",
    "status": "active",
    "updated_at": "2025-01-10T16:00:00Z"
  }
}

Delete Project

Requires admin permission.

Request

bash
DELETE /v1/projects/{id}
Authorization: Bearer YOUR_API_KEY

Response

Returns 204 No Content on success.

Deleting a project permanently removes all files and annotations associated with it.

Errors

Common Errors

CodeDescription
400Invalid request parameters
401Authentication required
403Insufficient permissions
404Project not found

Error Response

json
{
  "error": {
    "message": "Project not found",
    "code": 404
  }
}

Examples

Filter by Status

bash
GET /v1/projects?status=active
Authorization: Bearer YOUR_API_KEY

Search Projects

bash
GET /v1/projects?search=redesign
Authorization: Bearer YOUR_API_KEY

Archive Project

bash
PATCH /v1/projects/{id}
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "status": "archived"
}

Set Share Password

bash
PATCH /v1/projects/{id}
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "share_password": "secret123"
}

Next Steps

  1. Files API - Manage project files
  2. Annotations API - Work with feedback
  3. Rate Limits - Understand usage limits