Before using this endpoint, complete the Getting Started guide to obtain your API key and Company ID.
Prerequisites
- ✅ A valid Bearer token for an approved workspace member
- ✅ Company ID retrieved from
GET {{URL}}/accounts/companies - ✅ The Order ID (Project ID,
pid) of the order you want to update
Endpoint
multipart/form-data — use this even when no files are attached to satisfy the server’s multipart parser.
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <ACCESS_TOKEN> — the signed-in member’s access token. |
companyid | Yes | Mongo ObjectId of the company the order belongs to. |
clientid | Optional | Real-time client socket ID. When supplied, notifications include it. |
Query parameters
The Order / Project ID to update. Pass this as a query string parameter.
Request body fields
Updates the order title. Minimum 2 characters.
New status for the order. Must be one of:
Pending, Ongoing, Review, Completed, Cancelled.Allowed transitions:Reviewcan only followOngoingor anotherReview. Jumping fromPendingdirectly toReviewreturns a400 ValidationError.- Orders already
CompletedorCancelledcannot be updated. - Clients cannot cancel an order that has moved past
Pending.
Total budget figure. Must be
≥ 0. Uses the order’s existing currency unless currency is also provided.Currency code for the budget. Examples:
USD, CAD, EUR.Number of units purchased for the package. Must be
≥ 1.ISO 8601 date string for the order’s due date. Example:
"2025-12-31T00:00:00.000Z".ISO 8601 date string for the project start date.
Internal notes visible to your team.
Client brief or project summary.
Complete list of project manager member IDs to assign to this order. New IDs are added to the team; removed IDs are deleted. Each ID must belong to a member with a
projectManager role inside the same company.Required when
status is Completed or Cancelled. When true, all tasks in the order are marked done after the status change. When false, tasks remain in their current state.Allowed only when
status is Completed or Cancelled. When true, all outstanding client-requested tasks are rejected after the status update.Required only for subscription orders when changing recurrence frequency. Pair with
repeatDuration.Required alongside
repeatCount for subscription orders. One of: day, week, month, year.Optional limit on recurring billing cycles. Defaults to
0 (no limit).How each billing cycle is handled. One of:
createOrderWithTask, noChange.Zero or more file attachments. Files are appended to the order’s system folder; existing files are never overwritten. Use
multipart/form-data encoding and attach each file under the files field.Example request
Responses
| HTTP Status | Description |
|---|---|
200 OK | Update succeeded. |
400 ValidationError | Invalid order ID, blocked status transition, or malformed payload. Response includes fieldName when relevant. |
403 PermissionError | Caller is not an approved member, lacks the company role, the workspace subscription has expired, or a client attempted a forbidden cancel. |
500 Internal Server Error | Unhandled exception — check server logs. |
Success response
Business rules and side effects
- Status transitions are restricted.
Reviewcan only followOngoingor anotherReview. AttemptingPending → Reviewreturns400 ValidationError. - Moving a status from
PendingtoOngoing,Review, orCompletedactivates the order’s file folder so uploaded files become accessible to the project team. - Setting
statustoCompletedorCancelledrequiresmarkTasksAsDoneto be explicitly set totrueorfalse. - Status changes to
Review,Completed, orCancelledautomatically trigger client notifications:- Review — notifies the client that review is needed.
- Completed — sends the
orderCompletionnotification to the client. - Cancelled — sends the
orderCancellationnotification to the client.
- Every successful update fires an
ORDER.UPDATEDwebhook event with the updated order document and attachment metadata, if you have an active webhook subscribed to that event.

