Get an API token
Open Account → Integrations → Public API.
Choose scopes, personal access, allowed workspaces and expiration.
Create the token and copy it. The full value is shown once.
Bearer authentication
Send tokens in the Authorization header. Treat tokens like passwords and keep them on trusted backends only.
curl https://api.meetclique.net/v1/me \
-H "Authorization: Bearer mc_live_..."
Scopes, personal access and workspace access
Scope checks happen per route. Workspace routes also check allowed workspace ids and current membership. Personal routes additionally require allow_personal.
- Workspace routes fail with
403 workspace_forbiddenif the workspace is outside the token’s allowed set. - If the token owner is no longer a member of the workspace, workspace routes fail even if the workspace id was originally allowed.
- Any workspace member role can create a token. Runtime access still follows the current workspace role of the token owner.
member_readonlycan read allowed workspace resources but cannot use workspace write routes.task_board_managercan manage workspace tasks, tracker team entries and workspace clients, but does not get admin rights on notes or calendar events.- Workspace client write routes require
owner,adminortask_board_manager. - Workspace task updates/deletes require task owner, assignee or manager role; workspace note deletes require note owner or workspace admin; workspace calendar updates/deletes require event owner or workspace admin.
API coverage
| Resource | Personal | Workspace | Write | Notes |
|---|---|---|---|---|
| Profile | Yes | No | No | /v1/me and /v1/me/scopes. |
| Workspaces | No | Yes | No | Workspace and member listing. |
| Tasks | Yes | Yes | Yes | Full CRUD. |
| Notes | Yes | Yes | Yes | Full CRUD. |
| Calendar | Yes | Yes | Yes | Private workspace events are excluded. |
| Time tracker | Yes | Yes | Yes | Full CRUD. |
| Wallet | Yes | No | Yes | Personal transactions. |
| Clients | Yes | Yes | Yes | Workspace writes require an authorized role. |
| Files | Yes | Yes | Partial | Metadata listing only. |
| Notifications | Yes | No | Partial | List and mark as read. |
| Integrations | Yes | No | No | Scope catalog and token metadata. |
| Webhooks | Yes | No | Yes | CRUD and delivery history. |
| Comments | No | No | No | Not exposed. |
Endpoints
/v1/meReturns the authenticated account profile.
me.read
Required.
Not required for this route.
curl https://api.meetclique.net/v1/me \
-H "Authorization: Bearer mc_live_..."
/v1/me/scopesReturns granted scopes, the scope catalog, allowed workspace ids and the token personal-access flag.
integrations.read
Required.
401 invalid token, 403 missing scope.
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/workspaces | workspaces.read | Lists workspaces still allowed by the token after filtering. |
| GET | /v1/workspaces/{workspaceId} | workspaces.read | Returns workspace metadata and disabled status. |
| GET | /v1/workspaces/{workspaceId}/members | members.read | Lists workspace members and roles. |
curl https://api.meetclique.net/v1/workspaces/12/members \
-H "Authorization: Bearer mc_live_..."
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/tasks | tasks.read | List personal tasks. Supports limit, cursor, search. |
| POST | /v1/me/tasks | tasks.write | Create personal task. title required. |
| GET | /v1/me/tasks/{taskId} | tasks.read | Fetch personal task. |
| PATCH | /v1/me/tasks/{taskId} | tasks.write | Patch personal task. |
| DELETE | /v1/me/tasks/{taskId} | tasks.write | Delete personal task. |
| GET | /v1/workspaces/{workspaceId}/tasks | tasks.read | List workspace tasks. |
| POST | /v1/workspaces/{workspaceId}/tasks | tasks.write | Create workspace task. |
| GET | /v1/workspaces/{workspaceId}/tasks/{taskId} | tasks.read | Fetch workspace task. |
| PATCH | /v1/workspaces/{workspaceId}/tasks/{taskId} | tasks.write | Patch workspace task. |
| DELETE | /v1/workspaces/{workspaceId}/tasks/{taskId} | tasks.write | Delete workspace task. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/notes | notes.read | List personal notes. Supports limit, cursor, search. |
| POST | /v1/me/notes | notes.write | Create personal note. name required. |
| GET | /v1/me/notes/{noteId} | notes.read | Fetch personal note. |
| PATCH | /v1/me/notes/{noteId} | notes.write | Patch personal note. |
| DELETE | /v1/me/notes/{noteId} | notes.write | Delete personal note. |
| GET | /v1/workspaces/{workspaceId}/notes | notes.read | List workspace notes. |
| POST | /v1/workspaces/{workspaceId}/notes | notes.write | Create workspace note. |
| GET | /v1/workspaces/{workspaceId}/notes/{noteId} | notes.read | Fetch workspace note. |
| PATCH | /v1/workspaces/{workspaceId}/notes/{noteId} | notes.write | Patch workspace note. |
| DELETE | /v1/workspaces/{workspaceId}/notes/{noteId} | notes.write | Delete workspace note. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/calendar/events | calendar.read | List personal events. Supports limit, cursor, from, to. |
| POST | /v1/me/calendar/events | calendar.write | Create personal event. title and start required. |
| GET | /v1/me/calendar/events/{eventId} | calendar.read | Fetch personal event. |
| PATCH | /v1/me/calendar/events/{eventId} | calendar.write | Patch personal event. |
| DELETE | /v1/me/calendar/events/{eventId} | calendar.write | Delete personal event. |
| GET | /v1/workspaces/{workspaceId}/calendar/events | calendar.read | List workspace events. Private events are excluded. |
| POST | /v1/workspaces/{workspaceId}/calendar/events | calendar.write | Create workspace event. |
| GET | /v1/workspaces/{workspaceId}/calendar/events/{eventId} | calendar.read | Fetch workspace event. |
| PATCH | /v1/workspaces/{workspaceId}/calendar/events/{eventId} | calendar.write | Patch workspace event. |
| DELETE | /v1/workspaces/{workspaceId}/calendar/events/{eventId} | calendar.write | Delete workspace event. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/tracker/entries | tracker.read | List personal tracker entries. Supports limit, cursor, from, to. |
| POST | /v1/me/tracker/entries | tracker.write | Create personal tracker entry. start_time required. |
| GET | /v1/me/tracker/entries/{entryId} | tracker.read | Fetch personal tracker entry. |
| PATCH | /v1/me/tracker/entries/{entryId} | tracker.write | Patch personal tracker entry. |
| DELETE | /v1/me/tracker/entries/{entryId} | tracker.write | Delete personal tracker entry. |
| GET | /v1/workspaces/{workspaceId}/tracker/entries | tracker.read | List workspace tracker entries. |
| POST | /v1/workspaces/{workspaceId}/tracker/entries | tracker.write | Create workspace tracker entry. |
| GET | /v1/workspaces/{workspaceId}/tracker/entries/{entryId} | tracker.read | Fetch workspace tracker entry. |
| PATCH | /v1/workspaces/{workspaceId}/tracker/entries/{entryId} | tracker.write | Patch workspace tracker entry. |
| DELETE | /v1/workspaces/{workspaceId}/tracker/entries/{entryId} | tracker.write | Delete workspace tracker entry. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/wallet/transactions | wallet.read | List personal transactions. Supports limit, cursor, from, to. |
| POST | /v1/me/wallet/transactions | wallet.write | Create transaction. date, amount and type required. |
| GET | /v1/me/wallet/transactions/{id} | wallet.read | Fetch transaction. |
| PATCH | /v1/me/wallet/transactions/{id} | wallet.write | Patch transaction. |
| DELETE | /v1/me/wallet/transactions/{id} | wallet.write | Delete transaction. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/clients | clients.read | List personal clients. Supports limit, cursor, search. |
| POST | /v1/me/clients | clients.write | Create personal client. name required. |
| GET | /v1/me/clients/{clientId} | clients.read | Fetch personal client. |
| PATCH | /v1/me/clients/{clientId} | clients.write | Patch personal client. |
| DELETE | /v1/me/clients/{clientId} | clients.write | Delete personal client. |
| GET | /v1/workspaces/{workspaceId}/clients | clients.read | List workspace clients. |
| POST | /v1/workspaces/{workspaceId}/clients | clients.write | Create workspace client. Manager role required. |
| GET | /v1/workspaces/{workspaceId}/clients/{clientId} | clients.read | Fetch workspace client. |
| PATCH | /v1/workspaces/{workspaceId}/clients/{clientId} | clients.write | Patch workspace client. Manager role required. |
| DELETE | /v1/workspaces/{workspaceId}/clients/{clientId} | clients.write | Delete workspace client. Manager role required. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/files | files.read | List personal file metadata. Supports limit and cursor. |
| GET | /v1/workspaces/{workspaceId}/files | files.read | List workspace file metadata. |
No public upload, delete or file-content endpoint is currently exposed on /v1.
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/notifications | notifications.read | List notifications. Supports limit, cursor, unread=1. |
| POST | /v1/me/notifications/mark-read | notifications.read | Mark ids read. JSON body: { "ids": [1,2,3] }. Max 300 ids. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/integrations/tokens | integrations.read | Lists token metadata with names, scopes, workspace settings, expiry and last-used timestamps. |
| GET | /v1/me/integrations/scopes/catalog | integrations.read | Returns the public scope catalog used by the app token UI. |
| Method | Path | Scope | Notes |
|---|---|---|---|
| GET | /v1/me/webhooks | webhooks.read | List registered webhooks. |
| POST | /v1/me/webhooks | webhooks.write | Create webhook. Returns signing_secret once. |
| GET | /v1/me/webhooks/{id} | webhooks.read | Fetch webhook. |
| PATCH | /v1/me/webhooks/{id} | webhooks.write | Patch webhook. |
| DELETE | /v1/me/webhooks/{id} | webhooks.write | Delete webhook. |
| GET | /v1/me/webhooks/{id}/deliveries | webhooks.read | List delivery history. Supports limit and cursor. |
name, endpoint_url and non-empty events array are required. Optional: workspace_ids, enabled.
There is no public endpoint that lists the supported webhook event catalog yet. Event keys are accepted as normalized strings.
Error format
Error responses use a consistent JSON envelope and include a request id.
{
"ok": false,
"error": {
"code": "workspace_forbidden",
"message": "This token does not have access to this workspace.",
"request_id": "req_..."
}
}
400malformed input or route issues.401missing, invalid, expired or revoked token.403missing scope, no personal access or forbidden workspace.404missing resource.405unsupported method.409idempotency conflict.422validation error.429rate limited.500internal error.
Rate limits and idempotency
The current implementation uses a per-IP bucket and a per-token bucket. POST requests support idempotency keys.
240 requests / 60 seconds
120 requests / 60 seconds
30 requests / 60 seconds
- Headers:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset,Retry-After. Idempotency-Keyis supported for POST requests only.- Idempotency keys are stored for 24 hours.