DevelopersAPI reference

Dumpster rentals API

REST endpoints for dumpster rentals in ServFlo: 36 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
List dumpster rentalsGET /organizations/{organizationId}/rentalsread
Take a dumpster rental orderPOST /organizations/{organizationId}/rentalswrite
Get a dumpster rentalGET /organizations/{organizationId}/rentals/{rentalId}read
Change a dumpster rentalPATCH /organizations/{organizationId}/rentals/{rentalId}write
Hold a can for a rentalPUT /organizations/{organizationId}/rentals/{rentalId}/dumpsterwrite
Book a swap, dump run or pickupPOST /organizations/{organizationId}/rentals/{rentalId}/stopswrite
Set the pickup dayPUT /organizations/{organizationId}/rentals/{rentalId}/pickupwrite
Finish a rental stopPOST /organizations/{organizationId}/rentals/{rentalId}/stops/{stopId}/completewrite
Enter a dump ticketPOST /organizations/{organizationId}/rentals/{rentalId}/dump-ticketswrite
Delete a dump ticketDELETE /organizations/{organizationId}/rentals/{rentalId}/dump-tickets/{ticketId}sensitive
Add an extra charge to a rentalPOST /organizations/{organizationId}/rentals/{rentalId}/chargeswrite
Remove an extra chargeDELETE /organizations/{organizationId}/rentals/{rentalId}/charges/{chargeId}sensitive
Close a rental and make its final billPOST /organizations/{organizationId}/rentals/{rentalId}/closewrite
Bill a long rental's period nowPOST /organizations/{organizationId}/rentals/{rentalId}/bill-periodwrite
Cancel a rental before drop-offPOST /organizations/{organizationId}/rentals/{rentalId}/cancelwrite
The dumpster fleet at a glanceGET /organizations/{organizationId}/dumpsters/overviewread
Check which dumpster sizes are freeGET /organizations/{organizationId}/dumpsters/availabilityread
List dumpsters (cans)GET /organizations/{organizationId}/dumpstersread
Add a dumpster to the fleetPOST /organizations/{organizationId}/dumpsterswrite
Get a dumpster and its historyGET /organizations/{organizationId}/dumpsters/{dumpsterId}read
Change a dumpsterPATCH /organizations/{organizationId}/dumpsters/{dumpsterId}write
Delete a dumpsterDELETE /organizations/{organizationId}/dumpsters/{dumpsterId}sensitive
Change where a dumpster isPOST /organizations/{organizationId}/dumpsters/{dumpsterId}/statuswrite
List dumpster sizes and pricesGET /organizations/{organizationId}/dumpster-sizesread
Add a dumpster sizePOST /organizations/{organizationId}/dumpster-sizeswrite
Change a dumpster size or its pricesPATCH /organizations/{organizationId}/dumpster-sizes/{sizeId}write
Delete a dumpster sizeDELETE /organizations/{organizationId}/dumpster-sizes/{sizeId}sensitive
List yardsGET /organizations/{organizationId}/dumpster-yardsread
Add a yardPOST /organizations/{organizationId}/dumpster-yardswrite
Change a yardPATCH /organizations/{organizationId}/dumpster-yards/{yardId}write
List dump sitesGET /organizations/{organizationId}/dump-sitesread
Add a dump sitePOST /organizations/{organizationId}/dump-siteswrite
Change a dump sitePATCH /organizations/{organizationId}/dump-sites/{dumpSiteId}write
Load the dumpster rental starter setupPOST /organizations/{organizationId}/dumpster-settings/trade-setupwrite
Get the dumpster rental settingsGET /organizations/{organizationId}/dumpster-settingsread
Change the dumpster rental settingsPATCH /organizations/{organizationId}/dumpster-settingswrite

List dumpster rentals

GET /organizations/{organizationId}/rentals

Rental orders, newest drop-off first: status, customer, size, can number, dates and days out. Filter by status, open (scheduled, on site or picked up), size, customer, job or search (RNT-n, customer, address). Technicians: rentals on their jobs. Read-only.

Permission: jobs.read (Owner, Admin, Dispatcher, Technician (own jobs), Member); risk read (OAuth scope servflo.read).

Permissionjobs.read
Riskread, OAuth scope servflo.read. Read: reads only.
MCP toolrentals_list (toolset scheduling)

Parameters

NameInTypeRequiredDescription
statusqueryenumNoSCHEDULED (ordered, not dropped), ON_SITE, PICKED_UP (waiting for the dump ticket and final bill), CLOSED (billed), CANCELLED. One of SCHEDULED, ON_SITE, PICKED_UP, CLOSED, CANCELLED.
openquerybooleanNo
sizeIdquerystringNo
customerIdquerystringNo
jobIdquerystringNoOnly the rental this job carries out.
queryquerystringNoFree-text search over the list's names, numbers and contact details. Up to 200 characters.
limitqueryintegerNoPage size, 1–200. Default 50.
offsetqueryintegerNoRows to skip; the answer's total counts every match. Default 0.

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
itemsarray of object
items[].idstring
items[].identifierstring
items[].statusenumSCHEDULED (ordered, not dropped), ON_SITE, PICKED_UP (waiting for the dump ticket and final bill), CLOSED (billed), CANCELLED. One of SCHEDULED, ON_SITE, PICKED_UP, CLOSED, CANCELLED.
items[].sourceenumOne of OFFICE, ONLINE, AI_RECEPTIONIST, WEB_CHAT, PORTAL, API.
items[].jobIdstring
items[].customerobject
items[].customer.idstring
items[].customer.namestring
items[].propertyobject
items[].property.idstring
items[].property.namestring or null
items[].property.fullAddressstring or nullThe job site's address on one line.
items[].sizeobject
items[].size.idstring
items[].size.namestring
items[].dumpsterNumberstring or null
items[].requestedDropDatestring
items[].expectedPickupDatestring
items[].droppedOnstring or null
items[].pickedUpOnstring or null
items[].daysOutinteger or null
items[].pickupRequestedAtstring (date-time) or nullThe customer asked for a pickup (portal).
items[].swapRequestedAtstring (date-time) or nullThe customer asked for a swap (portal).
totalintegerHow many match the filters, across all pages.

Take a dumpster rental order

POST /organizations/{organizationId}/rentals

Books a can of a size at a customer's property (the job site; it must be one the customer occupies) from a drop-off date to an expected pickup date. Makes one job whose visits are the stops (drop-off and pickup; swaps are added later) and, by the business's setting, a draft up-front invoice for the base price and street permit. Prices are copied from the size. 409 when no can of the size is free for those dates: check GET /dumpsters/availability first, and set allowOverbook only when the person says to book it anyway. Optionally holds a specific can now (dumpsterId); otherwise the driver picks it at drop-off.

Permissionjobs.write (Owner, Admin, Dispatcher)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_create (toolset scheduling)

Request body

FieldTypeRequiredDescription
customerIdstringYes
propertyIdstringYes
sizeIdstringYes
requestedDropDatestringYesA calendar date in the business's own calendar, YYYY-MM-DD.
expectedPickupDatestringYesA calendar date in the business's own calendar, YYYY-MM-DD.
dropTimestring or nullNoA local time of day, HH:MM (24-hour). Blank means 09:00 on new jobs.
technicianIdstring or nullNoThe driver for the stops.
dumpsterIdstring or nullNo
permitFeeCentsinteger or nullNoStreet permit fee (default: the permit pricebook item), in integer cents. 0–100000000.
allowOverbookbooleanNo
billUpfrontbooleanNo
placementNotesstring or nullNoWhere to put the can (driveway left side, street, back alley …). Up to 2000 characters.
placementPhotoIdstring or nullNoA photo of the spot: an attachment id (upload it as a job or customer photo first).
debrisTypestring or nullNoUp to 200 characters.
permitRequiredbooleanNoThe can goes on the street and needs a permit.
permitNumberstring or nullNoUp to 100 characters.
periodicBillingbooleanNoLong rental: bill the extra days every billing period (default 30 days) while it is out.
notesstring or nullNoUp to 5000 characters.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customerId":"customer_id","propertyId":"property_id","sizeId":"size_id","requestedDropDate":"2026-11-03","expectedPickupDate":"2026-11-03"}'

Response

201: the answer's fields

A value of type any.

Get a dumpster rental

GET /organizations/{organizationId}/rentals/{rentalId}

One rental with its stops (each a visit of the rental's job), the cans moved, extra charges, dump tickets, invoices and the running bill (days out, tons, extra days and tons so far). Read-only.

Permission: jobs.read (Owner, Admin, Dispatcher, Technician (own jobs), Member); risk read (OAuth scope servflo.read).

Permissionjobs.read
Riskread, OAuth scope servflo.read. Read: reads only.
MCP toolrentals_get (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Example

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

Response

200: the answer's fields

A value of type any.

Change a dumpster rental

PATCH /organizations/{organizationId}/rentals/{rentalId}

Changes an open rental: dates (the drop-off date only before drop-off; the stops not done yet move with them), placement, debris, permit, periodic billing, notes, or the size (only before drop-off; its prices are copied again). 409 when the new dates or size overbook, unless allowOverbook.

Permissionjobs.write (Owner, Admin, Dispatcher)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_update (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
requestedDropDatestringNoA calendar date in the business's own calendar, YYYY-MM-DD.
expectedPickupDatestringNoA calendar date in the business's own calendar, YYYY-MM-DD.
sizeIdstringNo
permitFeeCentsintegerNoStreet permit fee, in integer cents. 0–100000000.
allowOverbookbooleanNo
placementNotesstring or nullNoWhere to put the can (driveway left side, street, back alley …). Up to 2000 characters.
placementPhotoIdstring or nullNoA photo of the spot: an attachment id (upload it as a job or customer photo first).
debrisTypestring or nullNoUp to 200 characters.
permitRequiredbooleanNoThe can goes on the street and needs a permit.
permitNumberstring or nullNoUp to 100 characters.
periodicBillingbooleanNoLong rental: bill the extra days every billing period (default 30 days) while it is out.
notesstring or nullNoUp to 5000 characters.

Example

curl -X PATCH "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"requestedDropDate":"2026-11-03","expectedPickupDate":"2026-11-03","sizeId":"size_id"}'

Response

200: the answer's fields

A value of type any.

Hold a can for a rental

PUT /organizations/{organizationId}/rentals/{rentalId}/dumpster

Before drop-off: holds a specific can of the rental's size (it shows RESERVED), changes it, or lets it go (dumpsterId: null). Optional: the driver can pick the can at drop-off instead.

Permissionjobs.write (Owner, Admin, Dispatcher)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_assignDumpster (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
dumpsterIdstring or nullYes

Example

curl -X PUT "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/dumpster" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dumpsterId":"dumpster_id"}'

Response

200: the answer's fields

A value of type any.

Book a swap, dump run or pickup

POST /organizations/{organizationId}/rentals/{rentalId}/stops

Adds a stop to the rental's job as a new visit on the dispatch board: SWAP (take the full can, leave an empty one, or dump and return the same can), DUMP_RUN, or PICKUP (when none is booked). A null date leaves it under Needs scheduling. Answers a customer's swap or pickup request.

Permissionjobs.write (Owner, Admin, Dispatcher)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_addStop (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
kindenumYesOne of SWAP, PICKUP, DUMP_RUN.
datestring or nullYesA calendar date in the business's own calendar, YYYY-MM-DD.
timestring or nullNoA local time of day, HH:MM (24-hour). Blank means 09:00 on new jobs.
technicianIdstring or nullNo

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/stops" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"SWAP","date":"2026-11-03"}'

Response

201: the answer's fields

A value of type any.

Set the pickup day

PUT /organizations/{organizationId}/rentals/{rentalId}/pickup

Moves the booked pickup to a day (and time), or books one when there is none. The expected pickup date follows. Use it when the customer calls for an early pickup or wants the can longer.

Permissionjobs.write (Owner, Admin, Dispatcher)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_schedulePickup (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
datestringYesA calendar date in the business's own calendar, YYYY-MM-DD.
timestring or nullNoA local time of day, HH:MM (24-hour). Blank means 09:00 on new jobs.

Example

curl -X PUT "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/pickup" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-11-03"}'

Response

200: the answer's fields

A value of type any.

Finish a rental stop

POST /organizations/{organizationId}/rentals/{rentalId}/stops/{stopId}/complete

The driver finished a stop. Drop-off: the can left (dumpsterId, default the can held) goes ON_SITE. Swap: the full can (removedDumpsterId, default the can on site) goes to the dump, the can left (dumpsterId; the same can for a dump and return) is on site, and the swap fee is charged. Pickup: the can goes to the dump and the rental is PICKED_UP. dryRun: it could not be done; nothing moves, the trip fee is charged and the stop is booked again for the office to place. Completes the visit too. Done again, it changes nothing. Technicians: their own stops.

Permissionjobs.work (Owner, Admin, Dispatcher, Technician)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_completeStop (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes
stopIdpathstringYes

Request body

FieldTypeRequiredDescription
dumpsterIdstring or nullNo
removedDumpsterIdstring or nullNo
dryRunbooleanNo
photoIdstring or nullNoA placement photo (a job photo of the rental's job).
dumpSiteIdstring or nullNoWhere the full can is going.
notesstring or nullNoUp to 2000 characters.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/stops/{stopId}/complete" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dumpsterId":"dumpster_id","removedDumpsterId":"removedDumpster_id","dryRun":true}'

Response

200: the answer's fields

A value of type any.

Enter a dump ticket

POST /organizations/{organizationId}/rentals/{rentalId}/dump-tickets

The scale ticket from the dump: weight in tons, the dump site, the disposal cost (default the site's cost per ton × weight), the ticket number and a photo (a job photo). The weight counts toward the rental's tons (billed past the included tons when it closes); the cost is a Disposal expense on the job (job costing). The emptied can goes back to the yard (returnToYardId, default the business's yard). Without stopId it is for the rental's latest swap or pickup. Technicians: their own rentals.

Permissionjobs.work (Owner, Admin, Dispatcher, Technician)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_recordDumpTicket (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
stopIdstring or nullNo
dumpsterIdstring or nullNo
dumpSiteIdstringYes
ticketNumberstring or nullNoUp to 100 characters.
weightTonsnumberYesAt most 100.
disposalCostCentsinteger or nullNoDisposal cost, in integer cents. 0–100000000.
dumpedOnstring or nullNoA calendar date in the business's own calendar, YYYY-MM-DD.
photoIdstring or nullNo
returnToYardIdstring or nullNo

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/dump-tickets" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dumpSiteId":"dumpSite_id","weightTons":1}'

Response

201: the answer's fields
FieldTypeDescription
idstring
rentalIdstring or null
weightTonsnumber
disposalCostCentsinteger
dumpedOnstring
expenseIdstring or null

Delete a dump ticket

DELETE /organizations/{organizationId}/rentals/{rentalId}/dump-tickets/{ticketId}

Removes a ticket entered by mistake and its disposal expense. Not once the rental is closed (billed).

Permissionjobs.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 toolrentals_deleteDumpTicket (toolset scheduling)
ApprovalOver MCP, this tool always waits for your approval in ServFlo. See Approvals.

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes
ticketIdpathstringYes

Example

curl -X DELETE "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/dump-tickets/{ticketId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
deletedboolean

Add an extra charge to a rental

POST /organizations/{organizationId}/rentals/{rentalId}/charges

A surcharge billed on the next rental invoice: a pricebook item (mattress, tires, appliance …, at its price unless unitPriceCents) or a named line with a price. Technicians can add them at a stop.

Permissionjobs.work (Owner, Admin, Dispatcher, Technician)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_addCharge (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
pricebookItemIdstring or nullNo
namestring or nullNoUp to 200 characters.
quantitynumberNoAt most 10000.
unitPriceCentsinteger or nullNoPrice each, in integer cents. 0–100000000.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/charges" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pricebookItemId":"pricebookItem_id","name":"Dana Whitfield","quantity":1}'

Response

201: the answer's fields

A value of type any.

Remove an extra charge

DELETE /organizations/{organizationId}/rentals/{rentalId}/charges/{chargeId}

Removes an extra charge (surcharge, swap or trip fee) that is not billed yet. 409 once it is on an invoice.

Permissionjobs.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 toolrentals_deleteCharge (toolset scheduling)
ApprovalOver MCP, this tool always waits for your approval in ServFlo. See Approvals.

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes
chargeIdpathstringYes

Example

curl -X DELETE "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/charges/{chargeId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields

A value of type any.

Close a rental and make its final bill

POST /organizations/{organizationId}/rentals/{rentalId}/close

After pickup: counts the days (drop-off to pickup) and the tons on the dump tickets and makes the final draft invoice: extra days (less those billed periodically), extra tons, unbilled charges, the fuel fee, and the base price when it was not billed up front. 409 before pickup, or when the pickup's dump ticket is missing (set allowWithoutTicket to close anyway). Send the invoice with the invoice tools. Closing again changes nothing.

Permission: invoices.write (Owner, Admin, Dispatcher, Technician (own jobs' invoices)); risk write (OAuth scope servflo.write).

Permissioninvoices.write
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_close (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
allowWithoutTicketbooleanNo

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/close" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"allowWithoutTicket":true}'

Response

200: the answer's fields

A value of type any.

Bill a long rental's period now

POST /organizations/{organizationId}/rentals/{rentalId}/bill-period

For a can still on site: bills the extra days accrued through the last full billing period (and unbilled charges) on a draft invoice. invoiceId is null when nothing is due. ServFlo also does this every day for rentals set to periodic billing.

Permission: invoices.write (Owner, Admin, Dispatcher, Technician (own jobs' invoices)); risk write (OAuth scope servflo.write).

Permissioninvoices.write
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_billPeriod (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/bill-period" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
invoiceIdstring or null
rentalanyA rental: identifier RNT-n, status, customer, job site (property), size, the can (dumpsterId, dumpsterNumber), dates (requestedDropDate, expectedPickupDate, droppedOn, pickedUpOn), placement notes and photo, debris type, permit, the prices copied at order (pricing), the stops (kind DROP_OFF / SWAP / PICKUP / DUMP_RUN, visitId, scheduledDate, visitStatus, the cans moved, completedAt), extra charges, dump tickets, invoices, and running: days out, tons dumped and the overages so far.

Cancel a rental before drop-off

POST /organizations/{organizationId}/rentals/{rentalId}/cancel

Cancels an order whose can is not out yet: its stops are canceled, a held can goes back to the yard and an unpaid up-front invoice is canceled. 409 once the can is dropped (book a pickup instead).

Permissionjobs.write (Owner, Admin, Dispatcher)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolrentals_cancel (toolset scheduling)

Parameters

NameInTypeRequiredDescription
rentalIdpathstringYes

Request body

FieldTypeRequiredDescription
reasonstring or nullNoUp to 1000 characters.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/rentals/{rentalId}/cancel" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"string"}'

Response

200: the answer's fields

A value of type any.

The dumpster fleet at a glance

GET /organizations/{organizationId}/dumpsters/overview

Per size: total, available, reserved, out (on site or full), full, at the dump, out of service, coming back soon (pickup within 2 days, or full) and utilization %. Every can with where it is and its map location (job site or yard), the yards, and the 25 cans out longest (days out, days past the planned pickup). Read-only.

Permissionschedule.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsters_overview (toolset scheduling)

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpsters/overview" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
todaystring
sizesarray of object
sizes[].sizeIdstring
sizes[].namestring
sizes[].totalinteger
sizes[].availableinteger
sizes[].outinteger
sizes[].comingBackinteger
sizes[].utilizationPctnumber
cansarray of object
cans[].idstring
cans[].numberstring
cans[].typestring
cans[].statusenumIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.
cans[].sizeobject
cans[].size.idstring
cans[].size.namestring
cans[].size.yardsinteger
cans[].wherestringWhere it is now: the job site's address, the yard or the dump.
cans[].latitudenumber or null
cans[].longitudenumber or null
cans[].rentalobject or nullThe rental it is out on or held for.
cans[].rental.idstring
cans[].rental.identifierstring
cans[].rental.customerNamestring
cans[].rental.droppedOnstring or null
cans[].rental.expectedPickupDatestring
yardsarray of object
yards[].idstring
yards[].namestring
yards[].addressstring or null
yards[].latitudenumber or null
yards[].longitudenumber or null
outLongestarray of object
outLongest[].idstring
outLongest[].numberstring
outLongest[].daysOutinteger
outLongest[].daysOverdueinteger

Check which dumpster sizes are free

GET /organizations/{organizationId}/dumpsters/availability

"Is a 20-yard free Tuesday to next Tuesday?" Per active size (or one sizeId): cans that can be rented, the most booked on any day of the range, how many are free for the whole range, and the price for the range (base plus extra days). Use before taking an order. Read-only.

Permissionschedule.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsters_availability (toolset scheduling)

Parameters

NameInTypeRequiredDescription
fromquerystringYesA calendar date in the business's own calendar, YYYY-MM-DD.
toquerystringYesA calendar date in the business's own calendar, YYYY-MM-DD.
sizeIdquerystringNo

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpsters/availability?from=2026-11-03&to=2026-11-03" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
fromstring
tostring
daysinteger
sizesarray of object
sizes[].sizeIdstring
sizes[].namestring
sizes[].yardsinteger
sizes[].basePriceCentsinteger
sizes[].includedDaysinteger
sizes[].includedTonsnumber
sizes[].extraDayCentsinteger
sizes[].extraTonCentsinteger
sizes[].priceForRangeCentsintegerBase price plus the extra days of this range; weight is billed after the dump.
sizes[].fleetinteger
sizes[].bookedinteger
sizes[].freeintegerCans of the size free for the whole range.
sizes[].availableboolean

List dumpsters (cans)

GET /organizations/{organizationId}/dumpsters

The fleet: each can's number, size, type, status and where it is, with the rental it is on. Filter by status, size, yard or number. Read-only.

Permissionschedule.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsters_list (toolset scheduling)

Parameters

NameInTypeRequiredDescription
statusqueryenumNoIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.
sizeIdquerystringNo
yardIdquerystringNo
queryquerystringNoFree-text search over the list's names, numbers and contact details. Up to 200 characters.
limitqueryintegerNo1–200. Default 200.
offsetqueryintegerNoRows to skip; the answer's total counts every match. Default 0.

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpsters" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
itemsarray of object
items[].idstring
items[].numberstring
items[].typestring
items[].statusenumIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.
items[].sizeobject
items[].size.idstring
items[].size.namestring
items[].size.yardsinteger
items[].wherestringWhere it is now: the job site's address, the yard or the dump.
items[].latitudenumber or null
items[].longitudenumber or null
items[].rentalobject or nullThe rental it is out on or held for.
items[].rental.idstring
items[].rental.identifierstring
items[].rental.customerNamestring
items[].rental.droppedOnstring or null
items[].rental.expectedPickupDatestring
totalintegerHow many match the filters, across all pages.

Add a dumpster to the fleet

POST /organizations/{organizationId}/dumpsters

A new can: its number (unique), size, type (default Roll-off) and yard (default the business's yard). It starts IN_YARD.

Permissioncatalog.write (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsters_create (toolset scheduling)

Request body

FieldTypeRequiredDescription
numberstringYesUp to 40 characters.
sizeIdstringYes
typestringNoUp to 60 characters.
yardIdstring or nullNo
notesstring or nullNoUp to 2000 characters.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpsters" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"number":"string","sizeId":"size_id"}'

Response

201: the answer's fields
FieldTypeDescription
idstring
numberstring
statusenumIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.

Get a dumpster and its history

GET /organizations/{organizationId}/dumpsters/{dumpsterId}

One can: where it is, its rental, and its history of moves (status changes with the place, the rental and the note). Read-only.

Permissionschedule.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsters_get (toolset scheduling)

Parameters

NameInTypeRequiredDescription
dumpsterIdpathstringYes

Example

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

Response

200: the answer's fields
FieldTypeDescription
idstring
numberstring
typestring
statusenumIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.
sizeobject
size.idstring
size.namestring
size.yardsinteger
wherestringWhere it is now: the job site's address, the yard or the dump.
latitudenumber or null
longitudenumber or null
rentalobject or nullThe rental it is out on or held for.
rental.idstring
rental.identifierstring
rental.customerNamestring
rental.droppedOnstring or null
rental.expectedPickupDatestring
movesarray of object
moves[].fromStatusenum or nullIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.
moves[].toStatusenumIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.
moves[].placestring or null
moves[].notestring or null
moves[].rentalIdentifierstring or null
moves[].createdAtstring (date-time)

Change a dumpster

PATCH /organizations/{organizationId}/dumpsters/{dumpsterId}

Its number, size (not while out on a rental), type or notes.

Permissioncatalog.write (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsters_update (toolset scheduling)

Parameters

NameInTypeRequiredDescription
dumpsterIdpathstringYes

Request body

FieldTypeRequiredDescription
numberstringNoUp to 40 characters.
sizeIdstringNo
typestringNoUp to 60 characters.
notesstring or nullNoUp to 2000 characters.

Example

curl -X PATCH "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpsters/{dumpsterId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"number":"string","sizeId":"size_id","type":"string"}'

Response

200: the answer's fields
FieldTypeDescription
idstring
numberstring
statusenumIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.

Delete a dumpster

DELETE /organizations/{organizationId}/dumpsters/{dumpsterId}

Removes a can added by mistake. One that has been on rentals is kept: mark it OUT_OF_SERVICE instead.

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

Parameters

NameInTypeRequiredDescription
dumpsterIdpathstringYes

Example

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

Response

200: the answer's fields
FieldTypeDescription
deletedboolean

Change where a dumpster is

POST /organizations/{organizationId}/dumpsters/{dumpsterId}/status

A by-hand move with a note for the history: back IN_YARD (a yard, default its own) or OUT_OF_SERVICE from anywhere; ON_SITE ⇄ FULL (the customer called it full); AT_DUMP from a job site. Rental stops move cans by themselves; use this for corrections.

Permissionjobs.write (Owner, Admin, Dispatcher)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsters_setStatus (toolset scheduling)

Parameters

NameInTypeRequiredDescription
dumpsterIdpathstringYes

Request body

FieldTypeRequiredDescription
statusenumYesOne of IN_YARD, FULL, ON_SITE, AT_DUMP, OUT_OF_SERVICE.
yardIdstring or nullNo
dumpSiteIdstring or nullNo
notestring or nullNoUp to 1000 characters.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpsters/{dumpsterId}/status" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"IN_YARD"}'

Response

200: the answer's fields
FieldTypeDescription
idstring
statusenumIN_YARD (free), RESERVED (held for a rental), ON_SITE (at a job site), FULL (on site, waiting for pickup), AT_DUMP (being emptied), OUT_OF_SERVICE (never offered). One of IN_YARD, RESERVED, ON_SITE, FULL, AT_DUMP, OUT_OF_SERVICE.

List dumpster sizes and prices

GET /organizations/{organizationId}/dumpster-sizes

Each size with its rental price: the base price, the days and tons it includes, the price per extra day and per extra ton, whether customers can order it online, and how many cans the fleet has. Read-only.

Permissioncatalog.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsterSetup_sizes (toolset settings)

Parameters

NameInTypeRequiredDescription
includeInactivequerybooleanNo

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-sizes" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields

An array of objects:

FieldTypeDescription
idstring
namestringe.g. 20 yard
yardsinteger
descriptionstring or null
basePriceCentsintegerThe rental price, including the included days and tons.
includedDaysinteger
includedTonsnumber
extraDayCentsintegerEach day past the included days.
extraTonCentsintegerEach ton past the included tons (billed to the hundredth).
onlineBookablebooleanCustomers can order it online, by phone (AI) and in the chat.
samplePricesbooleanStill the trade setup's sample prices: edit them.
activeboolean
canCountinteger

Add a dumpster size

POST /organizations/{organizationId}/dumpster-sizes

A size with its price: base, included days and tons, extra day and extra ton.

Permissionpricebook.manage (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_createSize (toolset settings)

Request body

FieldTypeRequiredDescription
namestringNoUp to 60 characters.
yardsintegerYes1–100.
descriptionstring or nullNoUp to 1000 characters.
basePriceCentsintegerYesBase rental price, in integer cents. 0–100000000.
includedDaysintegerYes0–365.
includedTonsnumberYes0–1000.
extraDayCentsintegerYesPrice per extra day, in integer cents. 0–100000000.
extraTonCentsintegerYesPrice per extra ton, in integer cents. 0–100000000.
onlineBookablebooleanNo
sortOrderintegerNo
activebooleanNo

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-sizes" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"yards":1,"basePriceCents":12500,"includedDays":1,"includedTons":1,"extraDayCents":12500,"extraTonCents":12500}'

Response

201: the answer's fields
FieldTypeDescription
idstring
namestringe.g. 20 yard
yardsinteger
descriptionstring or null
basePriceCentsintegerThe rental price, including the included days and tons.
includedDaysinteger
includedTonsnumber
extraDayCentsintegerEach day past the included days.
extraTonCentsintegerEach ton past the included tons (billed to the hundredth).
onlineBookablebooleanCustomers can order it online, by phone (AI) and in the chat.
samplePricesbooleanStill the trade setup's sample prices: edit them.
activeboolean

Change a dumpster size or its prices

PATCH /organizations/{organizationId}/dumpster-sizes/{sizeId}

New prices apply to new orders; rentals already taken keep the prices they were ordered at. active: false stops offering the size.

Permissionpricebook.manage (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_updateSize (toolset settings)

Parameters

NameInTypeRequiredDescription
sizeIdpathstringYes

Request body

FieldTypeRequiredDescription
namestringNoUp to 60 characters.
yardsintegerNo1–100.
descriptionstring or nullNoUp to 1000 characters.
basePriceCentsintegerNoBase rental price, in integer cents. 0–100000000.
includedDaysintegerNo0–365.
includedTonsnumberNo0–1000.
extraDayCentsintegerNoPrice per extra day, in integer cents. 0–100000000.
extraTonCentsintegerNoPrice per extra ton, in integer cents. 0–100000000.
onlineBookablebooleanNo
sortOrderintegerNo
activebooleanNo

Example

curl -X PATCH "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-sizes/{sizeId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","yards":1,"description":"string"}'

Response

200: the answer's fields
FieldTypeDescription
idstring
namestringe.g. 20 yard
yardsinteger
descriptionstring or null
basePriceCentsintegerThe rental price, including the included days and tons.
includedDaysinteger
includedTonsnumber
extraDayCentsintegerEach day past the included days.
extraTonCentsintegerEach ton past the included tons (billed to the hundredth).
onlineBookablebooleanCustomers can order it online, by phone (AI) and in the chat.
samplePricesbooleanStill the trade setup's sample prices: edit them.
activeboolean

Delete a dumpster size

DELETE /organizations/{organizationId}/dumpster-sizes/{sizeId}

Only a size with no cans and no rentals; otherwise turn it off (active: false).

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

Parameters

NameInTypeRequiredDescription
sizeIdpathstringYes

Example

curl -X DELETE "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-sizes/{sizeId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
deletedboolean

List yards

GET /organizations/{organizationId}/dumpster-yards

Where cans are kept: the business's warehouse locations (the same list as Inventory → Locations), with their map location and how many cans each has. Read-only.

Permissioncatalog.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsterSetup_yards (toolset settings)

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-yards" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields

An array of objects:

FieldTypeDescription
idstring
namestring
addressstring or null
latitudenumber or null
longitudenumber or null
canCountinteger

Add a yard

POST /organizations/{organizationId}/dumpster-yards

A yard with its address (found on the map for the fleet map).

Permissioncatalog.write (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_createYard (toolset settings)

Request body

FieldTypeRequiredDescription
namestringYesUp to 200 characters.
addressstring or nullNoUp to 500 characters.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-yards" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield"}'

Response

201: the answer's fields
FieldTypeDescription
idstring
namestring
addressstring or null
latitudenumber or null
longitudenumber or null

Change a yard

PATCH /organizations/{organizationId}/dumpster-yards/{yardId}

Its name, address or whether it is in use.

Permissioncatalog.write (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_updateYard (toolset settings)

Parameters

NameInTypeRequiredDescription
yardIdpathstringYes

Request body

FieldTypeRequiredDescription
namestringNoUp to 200 characters.
addressstring or nullNoUp to 500 characters.
activebooleanNo

Example

curl -X PATCH "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-yards/{yardId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","address":"string","active":true}'

Response

200: the answer's fields
FieldTypeDescription
idstring
namestring
addressstring or null
latitudenumber or null
longitudenumber or null

List dump sites

GET /organizations/{organizationId}/dump-sites

Landfills and transfer stations the business dumps at, with the cost per ton. Read-only.

Permissionschedule.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsterSetup_dumpSites (toolset settings)

Parameters

NameInTypeRequiredDescription
includeInactivequerybooleanNo

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dump-sites" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields

An array of objects:

FieldTypeDescription
idstring
namestring
addressstring or null
costPerTonCentsinteger
notesstring or null
activeboolean

Add a dump site

POST /organizations/{organizationId}/dump-sites

A dump site with its name, address and cost per ton (the default disposal cost on tickets).

Permissioncatalog.write (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_createDumpSite (toolset settings)

Request body

FieldTypeRequiredDescription
namestringYesUp to 200 characters.
addressstring or nullNoUp to 500 characters.
costPerTonCentsintegerYesCost per ton, in integer cents. 0–100000000.
notesstring or nullNoUp to 2000 characters.

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dump-sites" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","costPerTonCents":12500}'

Response

201: the answer's fields
FieldTypeDescription
idstring
namestring
addressstring or null
costPerTonCentsinteger
notesstring or null
activeboolean

Change a dump site

PATCH /organizations/{organizationId}/dump-sites/{dumpSiteId}

Its name, address, cost per ton, notes or whether it is in use.

Permissioncatalog.write (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_updateDumpSite (toolset settings)

Parameters

NameInTypeRequiredDescription
dumpSiteIdpathstringYes

Request body

FieldTypeRequiredDescription
namestringNoUp to 200 characters.
addressstring or nullNoUp to 500 characters.
costPerTonCentsintegerNoCost per ton, in integer cents. 0–100000000.
notesstring or nullNoUp to 2000 characters.
activebooleanNo

Example

curl -X PATCH "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dump-sites/{dumpSiteId}" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Dana Whitfield","address":"string","costPerTonCents":12500}'

Response

200: the answer's fields
FieldTypeDescription
idstring
namestring
addressstring or null
costPerTonCentsinteger
notesstring or null
activeboolean

Load the dumpster rental starter setup

POST /organizations/{organizationId}/dumpster-settings/trade-setup

Fills what is missing from the Dumpster rental trade setup: the standard sizes (10, 15, 20, 30, 40 yard) with sample prices marked to edit, a yard at the business address, the drop-off, swap, pickup and dump run services, the extra-charge items (swap fee, dry run, permit, fuel, mattress, tires, appliances …) and the settings pointed at them. Nothing already there is changed.

Permissionsettings.manage (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_startFromTradeSetup (toolset settings)

Example

curl -X POST "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-settings/trade-setup" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
sizesAddedinteger
yardAddedboolean
itemsAddedinteger

Get the dumpster rental settings

GET /organizations/{organizationId}/dumpster-settings

The rental length new orders start with, the default yard, up-front and periodic billing, the pricebook items charged for swaps, dry runs, permits and fuel, the service type and the debris types. Read-only.

Permissioncatalog.read (Owner, Admin, Dispatcher, Technician, Member)
Riskread, OAuth scope servflo.read. Read: reads only.
MCP tooldumpsterSetup_settings (toolset settings)

Example

curl "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-settings" \
  -H "Authorization: Bearer $SERVFLO_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
defaultRentalDaysinteger
defaultYardIdstring or nullWhere cans go back after the dump.
billUpfrontbooleanInvoice the base price when the order is taken.
billingPeriodDaysintegerRentals set to periodic billing are billed their extra days every this many days.
swapFeeItemIdstring or nullPricebook item charged on every swap.
tripFeeItemIdstring or nullPricebook item charged on a dry run.
permitFeeItemIdstring or nullPricebook item whose price is the street permit fee.
fuelFeeItemIdstring or nullPricebook item added to every final bill (fuel/environmental).
dropOffServiceTypeIdstring or nullThe service type rental jobs are booked as.
debrisTypesarray of string

Change the dumpster rental settings

PATCH /organizations/{organizationId}/dumpster-settings

Any of the settings; a null pricebook item stops that automatic charge. Owners and admins.

Permissionsettings.manage (Owner, Admin)
Riskwrite, OAuth scope servflo.write. Write: creates or changes records inside the business; nothing leaves it.
MCP tooldumpsterSetup_updateSettings (toolset settings)

Request body

FieldTypeRequiredDescription
defaultRentalDaysintegerNo1–365.
defaultYardIdstring or nullNo
billUpfrontbooleanNo
billingPeriodDaysintegerNo7–90.
swapFeeItemIdstring or nullNo
tripFeeItemIdstring or nullNo
permitFeeItemIdstring or nullNo
fuelFeeItemIdstring or nullNo
dropOffServiceTypeIdstring or nullNo
debrisTypesarray of stringNoUp to 50 items.

Example

curl -X PATCH "https://app.servflo.ai/api/organizations/$ORGANIZATION_ID/dumpster-settings" \
  -H "Authorization: Bearer $SERVFLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"defaultRentalDays":1,"defaultYardId":"defaultYard_id","billUpfront":true}'

Response

200: the answer's fields
FieldTypeDescription
defaultRentalDaysinteger
defaultYardIdstring or nullWhere cans go back after the dump.
billUpfrontbooleanInvoice the base price when the order is taken.
billingPeriodDaysintegerRentals set to periodic billing are billed their extra days every this many days.
swapFeeItemIdstring or nullPricebook item charged on every swap.
tripFeeItemIdstring or nullPricebook item charged on a dry run.
permitFeeItemIdstring or nullPricebook item whose price is the street permit fee.
fuelFeeItemIdstring or nullPricebook item added to every final bill (fuel/environmental).
dropOffServiceTypeIdstring or nullThe service type rental jobs are booked as.
debrisTypesarray of string

On this page

List dumpster rentalsParametersExampleResponseTake a dumpster rental orderRequest bodyExampleResponseGet a dumpster rentalParametersExampleResponseChange a dumpster rentalParametersRequest bodyExampleResponseHold a can for a rentalParametersRequest bodyExampleResponseBook a swap, dump run or pickupParametersRequest bodyExampleResponseSet the pickup dayParametersRequest bodyExampleResponseFinish a rental stopParametersRequest bodyExampleResponseEnter a dump ticketParametersRequest bodyExampleResponseDelete a dump ticketParametersExampleResponseAdd an extra charge to a rentalParametersRequest bodyExampleResponseRemove an extra chargeParametersExampleResponseClose a rental and make its final billParametersRequest bodyExampleResponseBill a long rental's period nowParametersExampleResponseCancel a rental before drop-offParametersRequest bodyExampleResponseThe dumpster fleet at a glanceExampleResponseCheck which dumpster sizes are freeParametersExampleResponseList dumpsters (cans)ParametersExampleResponseAdd a dumpster to the fleetRequest bodyExampleResponseGet a dumpster and its historyParametersExampleResponseChange a dumpsterParametersRequest bodyExampleResponseDelete a dumpsterParametersExampleResponseChange where a dumpster isParametersRequest bodyExampleResponseList dumpster sizes and pricesParametersExampleResponseAdd a dumpster sizeRequest bodyExampleResponseChange a dumpster size or its pricesParametersRequest bodyExampleResponseDelete a dumpster sizeParametersExampleResponseList yardsExampleResponseAdd a yardRequest bodyExampleResponseChange a yardParametersRequest bodyExampleResponseList dump sitesParametersExampleResponseAdd a dump siteRequest bodyExampleResponseChange a dump siteParametersRequest bodyExampleResponseLoad the dumpster rental starter setupExampleResponseGet the dumpster rental settingsExampleResponseChange the dumpster rental settingsRequest bodyExampleResponse