In this article, you can read about retrieving project data, creating and updating projects, uploading project files, managing project attributes, and deleting projects via the API.
Get Project
GET
https://api.recman.io/v2/get/?key={{api_key}}&scope=project&
fields=companyId,number,departmentId,responsibleUserId,name,type,status,completePercent,invoiceNotes,startDate,endDate,created,
updated,directions,invoiceRefUserId,workUnitPeriodType,
invoiceRefCompanyContactId,holidayRate,defaultInvoice,
defaultSalary,invoiceFactor,members,costCentreId,occupationCode,
value,description,attributes,file,serviceTypeId,commissionSplit,
notes,offerCompanyContactId,invoiceCurrency,salaryCurrency&page=1Retrieving data about projects is done through the GET method. You can search by page, a singleprojectId, or multiple projectIds, and narrow the results further with optional filters.
Note
One of page, projectId, or projectIds is mandatory and can be combined with the optional search parameters below. At least one field must be specified in fields.
| Field | Type | Required | Description |
|---|---|---|---|
| page | integer | Required (one of page/projectId/projectIds) | Page number (1000 projects per page) |
| projectId | integer | Required (one of page/projectId/projectIds) | Search for a specific project ID |
| projectIds | array of integer | Required (one of page/projectId/projectIds) | Search for multiple project IDs |
| companyId | integer | Optional | Retrieve projects connected to a specific company |
| departmentId | integer | Optional | Retrieve projects connected to a specific department |
| responsibleUserId | integer | Optional | Retrieve projects assigned to a specific responsible user |
| minProjectId | integer | Optional | Retrieve projects with projectId greater than or equal to the specified value |
| serviceTypeId | integer | Optional | Filter projects by service type |
| updated | string | Optional | Retrieve projects updated later than or equal to the specified date, e.g. 2026-01-01 |
| minEndDate | string | Optional | Filter projects with end date greater than or equal to the specified value, e.g. 2026-01-01 |
| maxEndDate | string | Optional | Filter projects with end date less than or equal to the specified value, e.g. 2026-01-01 |
Project fields (available via fields parameter):
| Field | Type | Required | Description |
|---|---|---|---|
| companyId | integer | Required (insert/update) | Company ID |
| departmentId | integer | Required (insert/update) | Department ID |
| responsibleUserId | integer | Required (insert/update) | Responsible user ID |
| name | string | Required (insert/update) | Project name |
| number | integer | Optional | Project number |
| serviceTypeId | integer | Optional | Service type ID |
| notes | string | Optional | Notes, free text |
| description | string | Optional | Description, free text |
| value | integer | Optional | Value, positive integer |
| type | string | Optional | Project type. Allowed values:
|
| status | string | Optional | Project status. Allowed values:
|
| startDate | string | Optional | Start date. Format "Y-m-d" |
| endDate | string | Optional | End date. Format "Y-m-d" |
| created | string | Optional | Created date. Format "Y-m-d H:i:s" |
| updated | string | Optional | Updated date. Format "Y-m-d H:i:s" |
| directions | string | Optional | Directions, free text |
| defaultSalary | decimal | Optional | Default salary |
| defaultInvoice | decimal | Optional | Default invoice |
| holidayRate | decimal | Optional | Holiday rate |
| completePercent | decimal | Optional | Complete percent |
| invoiceNotes | string | Optional | Invoice notes, free text |
| workUnitPeriodType | string | Optional | Work unit period type. Allowed values:
|
| invoiceRefUserId | integer | Optional | Invoice reference user ID |
| invoiceRefCompanyContactId | integer | Optional | Invoice reference company contact person ID |
| members | object | Optional | Array of integers withuserIds key and/or array of integers withcompanyContactIds key. See Members object table below. |
| invoiceCurrency | string | Optional | Currency code. Empty string = undefined currency. See currency codes below. |
| salaryCurrency | string | Optional | Currency code. Empty string = undefined currency. See currency codes below. |
| invoiceFactor | decimal | Optional (GET only) | Invoice factor |
| costCentreId | integer | Optional (GET only) | Cost center ID |
| occupationCode | integer | Optional (GET only) | Occupation code |
| attributes | object | Optional (GET only) | Project attributes. See the Insert Project - Attribute section below. |
| commissionSplit | object | Optional (GET only) | Commission split details |
| offerCompanyContactId | integer | Optional (GET only) | Offer company contact person ID |
| file | object | Optional (GET only) | Project file reference. See the Insert Project - Files section below. |
Members object:
| Field | Type | Required | Description |
|---|---|---|---|
| userIds | array of integer | Optional | Co-worker user IDs to add as project members |
| companyContactIds | array of integer | Optional | Company contact person IDs to add as project members |
Allowed currency codes (for invoiceCurrency and salaryCurrency):
|
|
Get Project File
GET
https://api.recman.io/v2/get/?key={{api_key}}&scope=projectFile&
projectId={{projectId}}&fileId={{fileId}}Retrieving a specific file attached to a project is done through the GET method, using the projectFile scope.
| Field | Type | Required | Description |
|---|---|---|---|
| key | string | Required | Your API key |
| scope | string | Required | Must be set to projectFile |
| projectId | integer | Required | The ID of the project the file belongs to |
| fileId | integer | Required | The ID of the file to retrieve |
Insert Project
POST
https://api.recman.io/v2/post/Creating a project is done through the POST method with scope set to project and operation set to insert. The companyId, departmentId, responsibleUserId, and name fields are required.
Refer to the Project fields table above for all available fields.
Update Project
POST
https://api.recman.io/v2/post/Updating a project is done through the POST method with scope set to project and operation set to update. The projectId is required to identify the project being updated, and uses the same field set as Insert Project.
| Field | Type | Required | Description |
|---|---|---|---|
| projectId | integer | Required | The ID of the project to update |
All other fields are the same as listed in the Project fields table above.
Insert Project - Files
POST
https://api.recman.io/v2/post/Uploading a file to a project is done through the POST method, using the project scope with a nested file object.
| Field | Type | Required | Description |
|---|---|---|---|
| projectId | integer | Required | The ID of the project the file is attached to |
File object:
| Field | Type | Required | Description |
|---|---|---|---|
| fileId | integer | Required on delete | The file ID |
| name | string | Optional | Name of file with extension |
| ext | string | Optional | Extension |
| created | string | Optional | Date of the file creation. Format "Y-m-d H:i:s" |
| base64 | string | Required | Base64 encoded file |
Insert Project - Attribute
POST
https://api.recman.io/v2/post/Adding an attribute value to a project is done through the POST method, using the project scope with a nested attribute object.
| Field | Type | Required | Description |
|---|---|---|---|
| projectId | integer | Required | The ID of the project the attribute is attached to |
Attribute object:
| Field | Type | Required | Description |
|---|---|---|---|
| attributeId | integer | Required on insert | The ID of the attribute |
| projectAttributeId | integer | Required on update/delete | The ID of the attribute on the project |
| bool | boolean | Optional | No = 0, Yes = 1. Valid values:
|
| text | string | Optional | Text content |
| rating | integer | Optional | Rating. Valid values:
|
| checkboxIds | array of integer | Optional | List of checkbox IDs |
| dropdownId | integer | Optional | Dropdown ID |
Delete Project
POST
https://api.recman.io/v2/post/Deleting a project and all of its data is done through the POST method with operation set to delete.
| Field | Type | Required | Description |
|---|---|---|---|
| projectId | integer | Required | The ID of the project to delete |
| projectAttributeId | integer | Optional | Deletes only this specific project attribute. |