Skip to content

Projects

Projects are the top-level organizational unit in Ditio. Every work order (task), time registration, and resource allocation belongs to a project — so most ERP integrations start here: create projects, then add work orders inside them.

Base URL: api/v4/integration/projects · Scope: ditioapiv3

Terminal window
# Test (default for all examples)
export DITIO_API_BASE="https://core-api.ditio.dev/core"
# Production: export DITIO_API_BASE="https://core-api.ditio.app/core"
POST /api/v4/integration/projects
Terminal window
curl -X POST "$DITIO_API_BASE/api/v4/integration/projects" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companyId": "YOUR_COMPANY_ID",
"projectNumber": "P-2026-001",
"name": "Prosjekt Fjellhall",
"active": true,
"startDate": "2026-03-01T00:00:00Z",
"finishedDatePlanned": "2026-12-31T00:00:00Z",
"projectCustomerName": "Eksempel Kommune",
"projectAddress": "Fjellveien 1, Trondheim",
"mainContactEmail": "prosjektleder@example.com"
}'

Response: the created project with its generated id.

{
"id": "65f1a2b3c4d5e6f7a8b9c0d1",
"companyId": "YOUR_COMPANY_ID",
"projectNumber": "P-2026-001",
"name": "Prosjekt Fjellhall",
"active": true
}
FieldTypeDescription
companyIdstringYour Ditio company ID
projectNumberstringYour internal project number (must be unique within the company)
FieldTypeDescription
namestringProject name
externalProjectNumberstringProject number in your external system
externalDimension1stringExternal dimension 1 (for accounting/ERP mapping)
externalDimension2stringExternal dimension 2 (for accounting/ERP mapping)
descriptionstringProject description
activeboolWhether the project is active (default: false)
requireTaskNumberboolRequire a work order number for time registrations
blockedForRegistrationboolBlock all time registrations on this project
startDatedatetimeProject start date
finishedDatePlanneddatetimePlanned completion date
finishedDatedatetimeActual completion date
estimatedHourQtydoubleEstimated total hours
mainForemanIdstringMain foreman (user ID, phone number, name, or employee number)
projectLeaderIdstringProject leader (user ID, phone number, name, or employee number)
mainContactEmailstringContact email for the project
projectCustomerNamestringCustomer name
customerNumberstringExternal customer number. When provided, the project is linked to an existing company customer with this number, or a new customer is created (named with projectCustomerName) and linked. Omit to leave any existing customer link unchanged.
projectAddressstringProject address
projectLocationLatitudedoubleGPS latitude
projectLocationLongitudedoubleGPS longitude
workBreakLunchStartTimestringLunch break start time (HH:mm)
workBreakLunchLengthintLunch break duration in minutes
workBreakDinnerStartTimestringDinner break start time (HH:mm)
workBreakDinnerLengthintDinner break duration in minutes
GET /api/v4/integration/projects

Returns a list of all projects in your company.

GET /api/v4/integration/projects/{id}
GET /api/v4/integration/projects/by-project-number/{projectNumber}
Terminal window
curl "$DITIO_API_BASE/api/v4/integration/projects/by-project-number/P-2026-001" \
-H "Authorization: Bearer $TOKEN"

Useful when you know the project number from your external system but not the Ditio ID.

PUT /api/v4/integration/projects/{id}

Replaces all fields — send the complete project object.

Terminal window
curl -X PUT "$DITIO_API_BASE/api/v4/integration/projects/65f1a2b3c4d5e6f7a8b9c0d1" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"companyId": "YOUR_COMPANY_ID",
"projectNumber": "P-2026-001",
"name": "Prosjekt Fjellhall - fase 2",
"active": true,
"startDate": "2026-03-01T00:00:00Z",
"finishedDatePlanned": "2027-06-30T00:00:00Z"
}'
PATCH /api/v4/integration/projects/{id}

Updates only the fields you include; all other fields remain unchanged.

Terminal window
curl -X PATCH "$DITIO_API_BASE/api/v4/integration/projects/65f1a2b3c4d5e6f7a8b9c0d1" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Prosjekt Fjellhall - nytt navn", "active": false }'
DELETE /api/v4/integration/projects/{id}

Projects can carry documents (drawings, contracts) that field workers see in the mobile app — see Documents.