How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Finalcad One Project API

Project-level operations for Finalcad One construction projects — project details and settings, project libraries, members and roles, locations (folders, plans, IFC/RVT upload), discussion groups, companies, modules for observations, forms and meetings, observations and their threads, forms and form answers, documents, phases, meetings and XLSX/PDF exports. 115 operations.

Finalcad One Project API is one of 6 APIs that Finalcad publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Project, Observations, Forms, Documents, and Locations. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, and an API reference.

This API exposes 115 operations across 84 paths, organized into 14 resource areas, and defines 2 schemas. It is described by OpenAPI 3.1.0, at version 2.41.

Requests are made against 2 base URLs: https://developer.finalcad.cloud/api, https://developer.sandbox.finalcad.cloud/api.

115 operations 84 paths 2 schemas 8 DELETE47 GET47 POST13 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.1.0
API Version
2.41
Base URL
https://developer.finalcad.cloud/api
Authentication
API Key, API Key
Resource Areas
14

Authentication & Security 2

Finalcad One Project API declares 2 security schemes for authenticating requests. An API key is passed in the header as X-API-Key (apiKey). An API key is passed in the header as Authorization (tokenAuth). By default, every request must be authenticated.

  • apiKey — Organization API key issued by Finalcad to organizations on an Enterprise licence. Sent on every call.
  • tokenAuth — Authorization: token , or Authorization: bearer for the legacy user-token flow (POST /auth).

Paths & Operations 115

Across 84 paths, the API surfaces 115 operations — 8 DELETE, 47 GET, 47 POST, 13 PUT. They span 14 resource areas, including Medias handeling, Project details, Locations, Observations, Phases, Modules, Project members management, Project libraries, and 6 more. Each is listed below with its method, path, parameters, and response codes.

Medias handeling 6
GET
/medias/{media_id}
Get media resource
mediasHandelingGetMediaResource 1 param → 200400401500
POST
/projects/{project_id}/medias/uploadinit
Init
mediasHandelingChunkUploadInit 1 param body → 200400401500
POST
/projects/{project_id}/medias/uploads
Upload medias
mediasHandelingUploadMedias 1 param body → 200400401500
POST
/projects/{project_id}/medias/{media_id}/uploadabort
Abort
mediasHandelingChunkUploadAbort 2 params body → 204400401500
POST
/projects/{project_id}/medias/{media_id}/uploadappend
Upload
mediasHandelingChunkUploadUpload 2 params body → 204400401500
POST
/projects/{project_id}/medias/{media_id}/uploadterminate
Terminate
mediasHandelingChunkUploadTerminate 2 params body → 200400401500
Project details 9
POST
/organizations/{organization_id}/projects
Create a new project
projectDetailsCreateANewProject 1 param body → 200400401500
GET
/organizations/{organization_id}/projects
Get projects list filtered
projectDetailsGetProjectsListFiltered 1 param → 200400401500
PUT
/projects/{projectId}
Update project
projectDetailsUpdateProject 1 param body → 200400401500
GET
/projects/{project_id}
Check project settings
projectDetailsCheckProjectSettings 1 param → 200400401500
DELETE
/projects/{project_id}
Delete a project
projectDetailsDeleteAProject 1 param → 204400401500
POST
/projects/{project_id}/logos
Add project logo
projectDetailsAddProjectLogo 1 param body → 200400401500
DELETE
/projects/{project_id}/logos
Remove project logos
projectDetailsRemoveProjectLogos 1 param body → 204400401500
GET
/projects/{project_id}/logos
Get project logos
projectDetailsGetProjectLogos 1 param → 200400401500
POST
/projects/{project_id}/restore
Restore a project
projectDetailsRestoreAProject 1 param → 204400401500
Locations 12
PUT
/projects/{projectId}/folders/{folderId}
Update folder
locationsUpdateFolder 2 params body → 200400401500
DELETE
/projects/{projectId}/folders/{folderId}
Delete folder
locationsDeleteFolder 2 params → 200400401500
GET
/projects/{project_id}/folders
Get folder tree
locationsGetFolderTree 1 param → 200400401500
POST
/projects/{project_id}/folders
Create folder
locationsCreateFolder 1 param body → 200400401500
GET
/projects/{project_id}/folders/children-folders
Get folder content
locationsGetFolderContent 1 param → 200400401500
GET
/projects/{project_id}/plans
Get plan tree
locationsGetPlanTree 1 param → 200400401500
POST
/projects/{project_id}/plans
Create plans
locationsCreatePlans 1 param body → 200400401500
POST
/projects/{project_id}/plans/upload_bim
Upload IFC
locationsUploadIfc 1 param body → 200400401500
GET
/projects/{project_id}/plans/{plan_id}
Get plan
locationsGetPlan 2 params → 200400401500
PUT
/projects/{project_id}/plans/{plan_id}
Update plan
locationsUpdatePlan 2 params body → 200400401500
DELETE
/projects/{project_id}/plans/{plan_id}
Delete plan
locationsDeletePlan 2 params → 200400401500
POST
/projects/{project_id}/plansfromdoc
Create plans from document
locationsCreatePlansFromDocument 1 param body → 200400401500
Observations 8
PUT
/projects/{projectId}/observations/{observationId}
Update observation
observationsUpdateObservation 2 params body → 200400401500
POST
/projects/{projectId}/observations/{observationId}/attach-media
Add image observation
observationsAddImageObservation 2 params body → 200400401500
GET
/projects/{project_id}/observations
Get project observations list
observationsGetProjectObservationsList 1 param → 200400401500
POST
/projects/{project_id}/observations
Create observation
observationsCreateObservation 1 param body → 200400401500
POST
/projects/{project_id}/observations/filter
Get filtered observation IDs
observationsGetFilteredObservationIds 1 param body → 200400401500
GET
/projects/{project_id}/observations/{observation_id}
Get observation details
observationsGetObservationDetails 2 params → 200400401500
POST
/projects/{project_id}/observations/{observation_id}/messages
Add observation comment
observationsAddObservationComment 2 params body → 200400401500
GET
/projects/{project_id}/observations/{observation_id}/messages
Get observation messages
observationsGetObservationMessages 2 params → 200400401500
Phases 4
GET
/projects/{projectId}/phases
Get phases
phasesGetPhases 1 param → 200400401500
POST
/projects/{project_id}/phases
Create phase
phasesCreatePhase 1 param body → 200400401500
PUT
/projects/{project_id}/phases/{phase_id}
Update phase
phasesUpdatePhase 3 params body → 200400401500
DELETE
/projects/{project_id}/phases/{phase_id}
Delete phase
phasesDeletePhase 2 params → 204400401500
Modules 21
GET
/projects/{project_id}/categories
Get form categories
modulesFormsGetFormCategories 1 param → 200400401500
POST
/projects/{project_id}/commonobservations
Create common observation
modulesObservationsCreateCommonObservation 1 param body → 200400401500
GET
/projects/{project_id}/commonobservations/{commonObs_id}
Get project common observation
modulesObservationsGetProjectCommonObservation 2 params → 200400401500
GET
/projects/{project_id}/forms-modules
Get form modules
modulesFormsGetFormModules 1 param → 200400401500
PUT
/projects/{project_id}/forms-modules/{moduleId}
Update form module
modulesFormsUpdateFormModule 2 params body → 200400401500
GET
/projects/{project_id}/forms-modules/{moduleId}
Get form module
modulesFormsGetFormModule 2 params → 200400401500
POST
/projects/{project_id}/forms-modules/{moduleId}/link-form
Add form template link
modulesFormsAddFormTemplateLink 2 params body → 200400401500
POST
/projects/{project_id}/forms-modules/{moduleId}/unlink-form
Remove form template link
modulesFormsRemoveFormTemplateLink 2 params body → 200400401500
POST
/projects/{project_id}/modules
Create observation module
modulesObservationsCreateObservationModule 1 param body → 200400401500
GET
/projects/{project_id}/modules
Get observation modules
modulesObservationsGetObservationModules 1 param → 200400401500
POST
/projects/{project_id}/modules/forms-suggestion
Create form module by suggestion
modulesFormsCreateFormModuleBySuggestion 1 param body → 200400401500
POST
/projects/{project_id}/modules/meetings
Enable meeting module
modulesMeetingsEnableMeetingModule 1 param body → 200400401500
GET
/projects/{project_id}/modules/meetings/{module_id}
Get meeting module
modulesMeetingsGetMeetingModule 2 params → 200400401500
PUT
/projects/{project_id}/modules/meetings/{module_id}
Update meeting module
modulesMeetingsUpdateMeetingModule 2 params body → 200400401500
POST
/projects/{project_id}/modules/suggestion
Create observation module based on suggestions
modulesObservationsCreateObservationModuleBasedOnSuggestions 1 param body → 200400401500
PUT
/projects/{project_id}/modules/{moduleId}
Modify observation module
modulesObservationsModifyObservationModule 2 params body → 200400401500
GET
/projects/{project_id}/modules/{moduleId}
Get observation module
modulesObservationsGetObservationModule 2 params → 200400401500
POST
/projects/{project_id}/trades
Create trade
modulesObservationsCreateTrade 1 param body → 200400401500
GET
/projects/{project_id}/trades/module
Get project trades by module
modulesObservationsGetProjectTradesByModule 1 param → 200400401500
GET
/projects/{project_id}/trades/{trade_id}
Get project trade
modulesObservationsGetProjectTrade 2 params → 200400401500
GET
/projects/{project_id}/trades/{trade_id}/commonobservations
Get project common observations by trade
modulesObservationsGetProjectCommonObservationsByTrade 2 params → 200400401500
Project members management 5
POST
/projects/{project_id}/change-members-role
Change role
projectMembersManagementChangeRole 1 param body → 204400401500
GET
/projects/{project_id}/members
Get members
projectMembersManagementGetMembers 1 param → 200400401500
POST
/projects/{project_id}/members
Add members to a project
projectMembersManagementAddMembersToAProject 1 param body → 200400401500
POST
/projects/{project_id}/remove-members
Remove members in a project
projectMembersManagementRemoveMembersInAProject 1 param body → 200400401500
GET
/projects/{project_id}/roles
Get project roles
projectMembersManagementGetProjectRoles 1 param → 200400401500
Project libraries 7
GET
/projects/{project_id}/commonobservations
Get project common observations
projectLibrariesGetProjectCommonObservations 1 param → 200400401500
GET
/projects/{project_id}/forms-priorities
Get project form priorities
projectLibrariesGetProjectFormPriorities 1 param → 200400401500
GET
/projects/{project_id}/formsforms
Get project form templates
projectLibrariesGetProjectFormTemplates 1 param → 200400401500
GET
/projects/{project_id}/observations-priorities
Get project observation priorities
projectLibrariesGetProjectObservationPriorities 1 param → 200400401500
GET
/projects/{project_id}/status
Get project observation status
projectLibrariesGetProjectObservationStatus 1 param → 200400401500
GET
/projects/{project_id}/statuses/{status_id}/next-statuses
Get project observation next status
projectLibrariesGetProjectObservationNextStatus 2 params → 200400401500
GET
/projects/{project_id}/trades
Get project trades
projectLibrariesGetProjectTrades 1 param → 200400401500
Companies 7
GET
/projects/{project_id}/companies
Get project companies list
companiesGetProjectCompaniesList 1 param → 200400401500
PUT
/projects/{project_id}/companies
Update project company name
companiesUpdateProjectCompanyName 1 param body → 200400401500
DELETE
/projects/{project_id}/companies
Delete project companies
companiesDeleteProjectCompanies 1 param body → 204400401500
POST
/projects/{project_id}/companies
Create project companies
companiesCreateProjectCompanies 1 param body → 200400401500
GET
/projects/{project_id}/companies/{company_id}
Get company info
companiesGetCompanyInfo 2 params → 200400401500
POST
/projects/{project_id}/companies/{company_id}/add-members
Add members
companiesAddMembers 2 params body → 200400401500
POST
/projects/{project_id}/companies/{company_id}/remove-members
Remove members
companiesRemoveMembers 2 params body → 200400401500
Documents 6
POST
/projects/{project_id}/documents
Create document or folders
documentsCreateDocumentOrFolders 1 param body → 200400401500
GET
/projects/{project_id}/documents
Get documents and folders
documentsGetDocumentsAndFolders 1 param → 200400401500
GET
/projects/{project_id}/documents/filter
Get documents and folders by parent
documentsGetDocumentsAndFoldersByParent 1 param → 200400401500
GET
/projects/{project_id}/documents/{document_id}
Get document or folder
documentsGetDocumentOrFolder 2 params → 200400401500
PUT
/projects/{project_id}/documents/{document_id}
Update document or folder
documentsUpdateDocumentOrFolder 2 params body → 200400401500
DELETE
/projects/{project_id}/documents/{document_id}
Delete document or folder
documentsDeleteDocumentOrFolder 2 params → 204400401500
Forms 14
POST
/projects/{project_id}/form-answers
Create answer
formsCreateAnswer 1 param body → 200400401500
POST
/projects/{project_id}/form-answers/link
Link item to answer
formsLinkItemToAnswer 1 param body → 200400401500
PUT
/projects/{project_id}/form-answers/{answer_id}
Update answer
formsUpdateAnswer 2 params body → 200400401500
DELETE
/projects/{project_id}/form-answers/{answer_id}
Delete answer
formsDeleteAnswer 2 params → 204400401500
POST
/projects/{project_id}/form-answers/{answer_id}/attach-media
Link file to answer
formsLinkFileToAnswer 2 params body → 500400401
POST
/projects/{project_id}/form-answers/{answer_id}/detach-media
Unlink file to answer
formsUnlinkFileToAnswer 2 params body → 200400401500
GET
/projects/{project_id}/forms
Get project forms list
formsGetProjectFormsList 1 param → 200400401500
POST
/projects/{project_id}/forms
Create form
formsCreateForm 1 param body → 200400401500
GET
/projects/{project_id}/forms/differential
Get project forms differential
formsGetProjectFormsDifferential 1 param → 200400401500
GET
/projects/{project_id}/forms/{form_id}/form-instances/{form_instance_id}
Get form answers
formsGetFormAnswers 4 params → 200400401500
POST
/projects/{project_id}/forms/{form_id}/messages
Add form instance comment
formsAddFormInstanceComment 2 params body → 200400401500
GET
/projects/{project_id}/forms/{form_instance_id}
Get form details
formsGetFormDetails 2 params → 200400401500
PUT
/projects/{project_id}/forms/{form_instance_id}
Update form
formsUpdateForm 2 params body → 200400401500
GET
/projects/{project_id}/forms/{form_instance_id}/messages
Get form instance messages
formsGetFormInstanceMessages 2 params → 200400401500
Exports 5
POST
/projects/{project_id}/forms/custom/generate
Create custom report for forms
exportsCreateCustomReportForForms 1 param body → 200400401500
POST
/projects/{project_id}/forms/report/generate
Create forms unit export in PDF
exportsCreateFormsUnitExportInPdf 1 param body → 200400401500
POST
/projects/{project_id}/forms/report/get
Get forms unit export in PDF
exportsGetFormsUnitExportInPdf 1 param body → 200400401500
POST
/projects/{project_id}/forms/report/xls
Create forms export in XLSX
exportsCreateFormsExportInXlsx 1 param body → 200400401500
POST
/projects/{project_id}/observations/report/xls
Create observations export in XLSX
exportsCreateObservationsExportInXlsx 1 param body → 200400401500
Discussion groups 9
POST
/projects/{project_id}/groups
Create discussion groups
discussionGroupsCreateDiscussionGroups 1 param body → 200400401500
GET
/projects/{project_id}/groups
Get discussion groups
discussionGroupsGetDiscussionGroups 1 param → 200400401500
GET
/projects/{project_id}/groups/item
Get discussion groups for an item
discussionGroupsGetDiscussionGroupsForAnItem 1 param → 200400401500
GET
/projects/{project_id}/groups/{group_id}
Get discussion group
discussionGroupsGetDiscussionGroup 2 params → 200400401500
PUT
/projects/{project_id}/groups/{group_id}
Update discussion group
discussionGroupsUpdateDiscussionGroup 2 params body → 200400401500
POST
/projects/{project_id}/groups/{group_id}/add_members
Add members to discussion group
discussionGroupsAddMembersToDiscussionGroup 2 params body → 200400401500
POST
/projects/{project_id}/groups/{group_id}/messages
Add discussion group message
discussionGroupsAddDiscussionGroupMessage 2 params body → 200400401500
GET
/projects/{project_id}/groups/{group_id}/messages
Get discussion group messages
discussionGroupsGetDiscussionGroupMessages 2 params → 200400401500
POST
/projects/{project_id}/groups/{group_id}/remove_members
Remove members to discussion group
discussionGroupsRemoveMembersToDiscussionGroup 2 params body → 200400401500
Meetings 2
GET
/projects/{project_id}/meetings
Get meetings
meetingsGetMeetings 1 param → 200400401500
GET
/projects/{project_id}/meetings/{meeting_id}
Get meeting details
meetingsGetMeetingDetails 2 params → 200400401500

Schemas 2

The contract defines 2 schemas that model the data the API accepts and returns. The most detailed are Paginated (6 properties), ApiError (4 properties). Each schema is shown below with its type and property counts.

ApiError
object
Finalcad One error envelope. apicode is either a static code (mostly 4xx, e.g. INVALIDINSTANCESTATE) or a constructed code of the form {ProcessCode}ERR{n} / {P…
4 properties
Paginated
object
Finalcad's shared pagination / differential envelope. Re-sending the last continuoustoken returns only elements added, modified or deleted since that call.
6 properties

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

finalcad-projects-openapi.yml Raw ↑

Other APIs Finalcad publishes across the network.

Finalcad One Organization Management API
Finalcad One Medias API
Finalcad One Webhooks API
Finalcad One Libraries API
Finalcad One Authentication API
Where this information came from

This is an independent, third-party profile of Finalcad One Project API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.