ClientPress exposes a REST API that lets you read portal data and trigger actions programmatically. This is useful for custom integrations, internal dashboards, and any tool that needs to interact with ClientPress data directly.
Base URL #
https://your-site.com/wp-json/cp/v1
Authentication #
The API uses two authentication methods depending on the endpoint:
WordPress Application Passwords (for read/write endpoints) #
Used for all standard portal endpoints. Generate an Application Password in your WordPress user profile:
- Go to Users → Profile
- Scroll to Application Passwords
- Enter a name (e.g. “ClientPress API”) and click Add New Application Password
- Copy the generated password
Include it in every API request as HTTP Basic Auth:
Authorization: Basic base64(username:application_password)
Administrators can access all portals. Project managers and clients see only portals they are assigned to.
API Key (for automation endpoints) #
Used for the inbound webhook endpoint. Generate a key under ClientPress → Integrations and include it as a header:
X-CP-API-Key: cp_your_key_here
Endpoints #
List Portals #
GET /portals
Returns an array of portals accessible to the authenticated user. Each portal includes its ID, title, slug, URL, status, accent color, client user ID, manager IDs, and timestamps.
Get a Single Portal #
GET /portals/{id}
Returns a single portal object by ID.
Create a Portal #
POST /portals
Requires admin authentication. Accepts:
title— string (required); Portal namestatus— string;active,pending, orarchivedaccent_color— string; Hex color code (e.g.#2d6a4f)allow_uploads— boolean; Whether clients can upload filesclient_user_id— integer; WordPress user ID of the primary clienttemplate_id— integer; ID of a portal template to apply
Returns the created portal object with a 201 Created status.
Get Portal Tasks #
GET /portals/{id}/tasks
Returns all task lists and their tasks for the portal. Each task includes its ID, title, description, status, due date, assignee IDs, and timestamps.
Get Portal Files #
GET /portals/{id}/files
Returns all file records for the portal, including file name, type, size, upload details, and approval status.
Get Portal Deliverables #
GET /portals/{id}/deliverables
Returns all deliverable records for the portal, including status, revision counts, category, and approval details.
Get Portal Activity #
GET /portals/{id}/activity
Returns a paginated activity log for the portal.
Query parameters:
limit— Default 25, max 100; Number of entries to returnoffset— Default 0; Number of entries to skip
Response:
{
"total": 47,
"limit": 25,
"offset": 0,
"items": [
{
"id": 123,
"user_id": 1,
"action": "task_completed",
"object_label": "Sign the contract",
"description": "Admin completed Sign the contract",
"created_at": "2024-01-18 14:22:00"
}
]
}
Send an Invitation #
POST /portals/{id}/invite
Requires admin authentication. Accepts:
email— string (required); Client’s email addressname— string; Client’s name (used in the invitation email)
Returns a confirmation message on success.
Inbound Automation Webhook #
POST /webhook
Authenticated with an API key (X-CP-API-Key header). Accepts a JSON body with an action field.
Supported actions: create_portal, send_invite, assign_user, update_portal
This endpoint is used by Zapier, Make, OttoKit, and any other automation tool sending actions into ClientPress. See the individual integration docs for setup details.
Verify API Key #
GET /verify
Authenticated with an API key. Returns a success response confirming the key is valid and the site URL and plugin version.
{
"success": true,
"site": "https://youragency.com",
"version": "1.0.0"
}
