DevelopersAPI referenceProjects

Daily logs API

REST endpoints for daily logs in ServFlo: 5 operations with parameters, request and response fields, permissions and curl examples.

Base URL: https://app.servflo.ai/api. Every call needs Authorization: Bearer sfk_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.

OperationEndpointRisk
A project's daily logsGET /organizations/{organizationId}/projects/{projectId}/daily-logsread
Fill in the day's logPUT /organizations/{organizationId}/projects/{projectId}/daily-logswrite
A daily logGET /organizations/{organizationId}/daily-logs/{dailyLogId}read
Delete a daily logDELETE /organizations/{organizationId}/daily-logs/{dailyLogId}sensitive
Share a daily log with the customerPOST /organizations/{organizationId}/daily-logs/{dailyLogId}/sharesensitive

A project's daily logs

GET /organizations/{organizationId}/projects/{projectId}/daily-logs

Daily logs, newest day first, with weather, who was on site, work done, delays or issues and photos. Read-only.

Permissionprojects.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldailyLogs_list (toolset projects)

Parameters

NameInTypeRequiredDescription
projectIdpathstringYesThe project (GET /projects).
limitqueryintegerNo1–200. Default 30.
offsetqueryintegerNoDefault 0.

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/projects/{projectId}/daily-logs" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
itemsarray of object
items[].idstring
items[].projectIdstring
items[].datestring
items[].weatherSummarystring or null
items[].workDonestring or null
items[].hadDelayboolean
items[].issuesstring or null
items[].sharedWithCustomerboolean
items[].photosarray of object
items[].photos[].idstring
items[].photos[].categoryenumOne of PLAN, PERMIT, CONTRACT, PHOTO, SELECTION, LIEN_WAIVER, OTHER.
items[].photos[].fileNamestring
items[].photos[].contentTypestring
items[].photos[].sharedWithCrewboolean
items[].photos[].sharedWithSubsboolean
items[].photos[].sharedWithCustomerboolean
items[].photos[].urlstringA 10-minute download URL.
totalinteger

Fill in the day's log

PUT /organizations/{organizationId}/projects/{projectId}/daily-logs

Creates the project's log for date (default today in the business's calendar) or changes it: one per project per day. A new log takes the day's weather from the forecast at the property unless weatherSummary is given. Only the fields sent change. Add photos with POST …/files (category PHOTO, dailyLogId). Technicians: their own projects.

Permissionprojects.field (Owner, Admin, Dispatcher, Technician)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldailyLogs_save (toolset projects)

Parameters

NameInTypeRequiredDescription
projectIdpathstringYesThe project (GET /projects).

Request body

FieldTypeRequiredDescription
datestringNoA calendar date in the business's own calendar, YYYY-MM-DD.
weatherSummarystring or nullNoUp to 300 characters.
weatherHighFinteger or nullNo-80–150.
weatherLowFinteger or nullNo-80–150.
weatherRainChanceinteger or nullNo0–100.
weatherWindMphinteger or nullNo0–250.
crewTechnicianIdsarray of stringNoCrew on site (GET /technicians). Up to 50 items.
vendorIdsarray of stringNoSubcontractors on site (GET /subcontractors). Up to 50 items.
othersOnSitestring or nullNoAnyone else: inspector, supplier, the owner. Up to 1000 characters.
workDonestring or nullNo
hadDelaybooleanNo
issuesstring or nullNoDelays or issues.

Example

curl -X PUT "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/projects/{projectId}/daily-logs" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-11-03","weatherSummary":"string","weatherHighF":1}'

Response

200: the answer's fields
FieldTypeDescription
idstring
projectIdstring
datestring
weatherSummarystring or null
workDonestring or null
hadDelayboolean
issuesstring or null
sharedWithCustomerboolean
photosarray of object
photos[].idstring
photos[].categoryenumOne of PLAN, PERMIT, CONTRACT, PHOTO, SELECTION, LIEN_WAIVER, OTHER.
photos[].fileNamestring
photos[].contentTypestring
photos[].sharedWithCrewboolean
photos[].sharedWithSubsboolean
photos[].sharedWithCustomerboolean
photos[].urlstringA 10-minute download URL.

A daily log

GET /organizations/{organizationId}/daily-logs/{dailyLogId}

One daily log with its photos. Read-only.

Permissionprojects.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldailyLogs_get (toolset projects)

Parameters

NameInTypeRequiredDescription
dailyLogIdpathstringYes

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/daily-logs/{dailyLogId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
idstring
projectIdstring
datestring
weatherSummarystring or null
workDonestring or null
hadDelayboolean
issuesstring or null
sharedWithCustomerboolean
photosarray of object
photos[].idstring
photos[].categoryenumOne of PLAN, PERMIT, CONTRACT, PHOTO, SELECTION, LIEN_WAIVER, OTHER.
photos[].fileNamestring
photos[].contentTypestring
photos[].sharedWithCrewboolean
photos[].sharedWithSubsboolean
photos[].sharedWithCustomerboolean
photos[].urlstringA 10-minute download URL.

Delete a daily log

DELETE /organizations/{organizationId}/daily-logs/{dailyLogId}

Destructive: deletes the log; its photos stay in the project's files.

Permissionprojects.write (Owner, Admin, Dispatcher)
Risksensitive, OAuth scope servflo.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP tooldailyLogs_delete (toolset projects)
ApprovalOver MCP, this tool always waits for your approval in ServFlo. See Approvals.

Parameters

NameInTypeRequiredDescription
dailyLogIdpathstringYes

Example

curl -X DELETE "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/daily-logs/{dailyLogId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
oktrue

Share a daily log with the customer

POST /organizations/{organizationId}/daily-logs/{dailyLogId}/share

Exposes to the customer: shared: true shows the log (work done, weather, delays or issues) and its photos on the project in the customer's portal; false hides it again.

Permissionprojects.write (Owner, Admin, Dispatcher)
Risksensitive, OAuth scope servflo.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP tooldailyLogs_share (toolset projects)
ApprovalOver MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in ServFlo). See Approvals.

Parameters

NameInTypeRequiredDescription
dailyLogIdpathstringYes

Request body

FieldTypeRequiredDescription
sharedbooleanYes

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/daily-logs/{dailyLogId}/share" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"shared":true}'

Response

200: the answer's fields
FieldTypeDescription
idstring
projectIdstring
datestring
weatherSummarystring or null
workDonestring or null
hadDelayboolean
issuesstring or null
sharedWithCustomerboolean
photosarray of object
photos[].idstring
photos[].categoryenumOne of PLAN, PERMIT, CONTRACT, PHOTO, SELECTION, LIEN_WAIVER, OTHER.
photos[].fileNamestring
photos[].contentTypestring
photos[].sharedWithCrewboolean
photos[].sharedWithSubsboolean
photos[].sharedWithCustomerboolean
photos[].urlstringA 10-minute download URL.

On this page