Developers API reference Projects Project templates API REST endpoints for project templates in ServFlo: 4 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 .
GET /organizations/{organizationId}/project-templates
Phase templates (phases with typical working days, starting budget lines), seeded once from the business's trade (remodeling, general contractor, roofing; a generic one for all). Read-only.
Permission projects.read (Owner, Admin, Dispatcher, Technician, Member)Risk read, OAuth scope servflo.read. Read: reads only.MCP tool projectTemplates_list (toolset projects)
Name In Type Required Description includeRetiredquery boolean No
curl "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /project-templates" \
-H "Authorization: Bearer $SERVFLO_API_KEY "
200: the answer's fields An array of objects:
Field Type Description idstring namestring presetKeystring or null phasesarray of object phases[].namestring phases[].daysnumber budgetLinesarray of object budgetLines[].categoryenum Budget bucket: LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT or OTHER. One of LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT, OTHER. budgetLines[].descriptionstring activeboolean
POST /organizations/{organizationId}/project-templates
A template: phases in order with their working days, and starting budget lines.
Permission projects.manage (Owner, Admin)Risk write, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.MCP tool projectTemplates_create (toolset projects)
Field Type Required Description namestring Yes Up to 200 characters. phasesarray of object Yes Up to 60 items. phases[].namestring Yes Up to 200 characters. phases[].daysinteger Yes 1–365. budgetLinesarray of object No Up to 60 items. budgetLines[].categoryenum Yes Budget bucket: LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT or OTHER. One of LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT, OTHER. budgetLines[].descriptionstring Yes Up to 200 characters.
curl -X POST "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /project-templates" \
-H "Authorization: Bearer $SERVFLO_API_KEY " \
-H "Content-Type: application/json" \
-d '{"name":"Dana Whitfield","phases":[{"name":"Dana Whitfield","days":1}]}'
201: the answer's fields Field Type Description idstring namestring presetKeystring or null phasesarray of object phases[].namestring phases[].daysnumber budgetLinesarray of object budgetLines[].categoryenum Budget bucket: LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT or OTHER. One of LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT, OTHER. budgetLines[].descriptionstring activeboolean
PATCH /organizations/{organizationId}/project-templates/{projectTemplateId}
Name, phases, budget lines; active: false retires it.
Permission projects.manage (Owner, Admin)Risk write, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.MCP tool projectTemplates_update (toolset projects)
Name In Type Required Description projectTemplateIdpath string Yes
Field Type Required Description namestring No Up to 200 characters. phasesarray of object No Up to 60 items. phases[].namestring Yes Up to 200 characters. phases[].daysinteger Yes 1–365. budgetLinesarray of object No Up to 60 items. budgetLines[].categoryenum Yes Budget bucket: LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT or OTHER. One of LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT, OTHER. budgetLines[].descriptionstring Yes Up to 200 characters. activeboolean No
curl -X PATCH "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /project-templates/{projectTemplateId}" \
-H "Authorization: Bearer $SERVFLO_API_KEY " \
-H "Content-Type: application/json" \
-d '{"name":"Dana Whitfield","phases":[{"name":"Dana Whitfield","days":1}],"budgetLines":[{"category":"LABOR","description":"string"}]}'
200: the answer's fields Field Type Description idstring namestring presetKeystring or null phasesarray of object phases[].namestring phases[].daysnumber budgetLinesarray of object budgetLines[].categoryenum Budget bucket: LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT or OTHER. One of LABOR, MATERIALS, SUBCONTRACTORS, EQUIPMENT, OTHER. budgetLines[].descriptionstring activeboolean
DELETE /organizations/{organizationId}/project-templates/{projectTemplateId}
Destructive: deletes a template (projects made from it keep their phases).
Permission projects.manage (Owner, Admin)Risk sensitive, OAuth scope servflo.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.MCP tool projectTemplates_delete (toolset projects)Approval Over MCP, this tool always waits for your approval in ServFlo. See Approvals .
Name In Type Required Description projectTemplateIdpath string Yes
curl -X DELETE "https://app.servflo.ai/api/organizations/ $ORGANIZATION_ID /project-templates/{projectTemplateId}" \
-H "Authorization: Bearer $SERVFLO_API_KEY "
200: the answer's fields Field Type Description oktrue