Skip to content

Overview

The Ditio API lets you integrate your systems with Ditio’s construction platform. Whether you need to create projects and employees from your ERP, export time and payroll data, push machine telemetry from your fleet, or pull site photos for an archive — the API provides programmatic access to your Ditio data.

Ditio has a test and a production environment, each with its own hosts and its own credentials. Build against test first; the hosts, environment variables and rules for each are in Environments. Ditio Web for administrators is at https://core.ditio.app/#/.

GoalEndpoint / toolDocs
Create and manage projectsapi/v4/integration/projectsProjects
Create and manage work orders (tasks)api/v4/integration/tasksWork Orders
Create and manage employees (v4)api/v4/integration/usersUsers
Create and manage employees (v5)api/v5/integration/employeesEmployees v5
Read project personnel and their rolesapi/v4/integration/projects/personnel, api/v4/integration/projects/{id}/personnelProjects
Create and manage machines and equipmentapi/v4/integration/machinesMachines
Manage user certificatesapi/v4/integration/certificatesCertificates
Attach documents to projects & work ordersapi/v4/integration/{projects,tasks}/{id}/documentsDocuments
Push absences from your payroll or HR systemapi/integration/absencesAbsences
Export payroll dataapi/payroll-exportPayroll Export
Extract time, absence, HSE, and metadata/v1/... on the reporting baseData Extraction
Extract mass transport (haul) trips/v1/flow-trip-registrationsMass Transport Registrations
Extract project images/v1/imagesImage Extraction
Connect Power BIPower BI templatePower BI
Azure AD single sign-onAzure PortalAzure AD SSO
Automatic user provisioningSCIM 2.0SCIM Provisioning

The partner-facing read-write surface on the Integration API base ($DITIO_API_BASE):

  • api/v4/integration/* and api/v5/integration/*: projects, project personnel, work orders, users and employees, machines, certificates, and documents
  • api/integration/absences: absences from your payroll or HR system
  • api/payroll-export: payroll export

Paginated, read-only extraction endpoints under /v1/... on the reporting base. Designed for BI tools, payroll integrators, and data warehouses. The extraction endpoints support cursor-based pagination with ContinuationToken and incremental sync with ModifiedSince. The one exception is /v1/item-registrations/web-query, which returns the whole result as semicolon-separated text for Power BI, without paging; see Pagination.

Write endpoints for pushing excavator states and weight measures from fleet management, telematics, and weighbridge systems. See Machine Integration.

Each surface has its own base URL and token scope — see Which scope for which host.

Most integrations set up data in this order:

1. Projects → Create your projects first
2. Work orders → Add work orders (tasks) to each project
3. Users → Create employee accounts
4. Machines → Register machines and equipment

Projects must exist before you can add work orders to them. Users and machines can be created independently.

  • All requests require a valid Bearer token in the Authorization header
  • Request and response bodies are JSON with camelCase property names on the Integration API and the Data Extraction API. Older lookup endpoints such as /api/projects, /api/resources (see Reference Data) and /api/MachineType answer in PascalCase unless you send the header case: camel-case
  • Dates are in ISO 8601 format: 2026-01-15T00:00:00Z
  • IDs are strings; see Data Model
  • companyId is your Ditio company ID. Projects and machines fall back to your API client’s company when you leave it out on create
  • PATCH updates only the fields you send. Several PUT endpoints also leave omitted fields unchanged, so check the endpoint’s reference page before relying on PUT to clear a field
  • DELETE on a project is refused while the project has registrations; see Data Model. Prefer deactivating (active: false)

Status codes, error bodies and retry strategy are covered in Error Handling.

Ready-made code examples and Postman collections: