Projects API
API endpoints for managing projects in Moqup.
The Projects API allows you to create, read, update, and delete projects programmatically.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /projects | List all projects |
| POST | /projects | Create 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_KEYQuery Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
per_page | integer | Items per page (default: 20, max: 100) |
status | string | Filter by status: active, archived |
client_id | string | Filter by client ID |
search | string | Search 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
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Project name |
client_id | string | No | Associated client ID |
client_name | string | No | Client name (if no client_id) |
client_email | string | No | Client email for notifications |
notify_client_on_upload | boolean | No | Notify 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_KEYResponse
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
| Field | Type | Description |
|---|---|---|
name | string | Update project name |
client_id | string | Update associated client |
client_name | string | Update client name |
client_email | string | Update client email |
notify_client_on_upload | boolean | Update notification setting |
status | string | active or archived |
share_password | string | Set 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_KEYResponse
Returns 204 No Content on success.
Deleting a project permanently removes all files and annotations associated with it.
Errors
Common Errors
| Code | Description |
|---|---|
| 400 | Invalid request parameters |
| 401 | Authentication required |
| 403 | Insufficient permissions |
| 404 | Project 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_KEYSearch Projects
bash
GET /v1/projects?search=redesign
Authorization: Bearer YOUR_API_KEYArchive 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
- Files API - Manage project files
- Annotations API - Work with feedback
- Rate Limits - Understand usage limits