Dumpster Controls · agent page

This is the agent-optimized version of https://dumpstercontrols.io/help/booking-api/lesson-9-junk-removal-with-the-booking-api: the same content as the human page, without scripts, styles, animations or navigation. People should open the full page.

Canonical page
https://dumpstercontrols.io/help/booking-api/lesson-9-junk-removal-with-the-booking-api
Last updated
2026-10-05
Tokens
1,823 tokens (cl100k_base), within the 2,000-token budget for a help page
Size
12 KB for this page, against 25 KB for the human page (52% smaller)
Markdown
https://dumpstercontrols.io/help/booking-api/lesson-9-junk-removal-with-the-booking-api.md, or send Accept: text/markdown to the canonical URL
Cite as
Lesson 9: junk removal with the Booking API (/junk/*). Dumpster Controls. https://dumpstercontrols.io/help/booking-api/lesson-9-junk-removal-with-the-booking-api (accessed 2026-10-10).
More for agents
Facts sheet · llms.txt · llms-full.txt · All agent pages · Product manual

Booking API course · updated 2026-10-05

Lesson 9: junk removal with the Booking API (/junk/*)

Junk removal has its own hosted page, its own prices (by load size), its own arrival windows and optional photos of the material. The API mirrors it under /junk/* with the same keys, the same session and the same Stripe flow, so one integration can offer both services.

Before you start

  • Lessons 2, 6, 7 and 8 (the dumpster flow); the company has junk removal switched on in Online Booking
  1. ## GET /junk/config
    Response data: junk_online, payments_ready, hosted_page (dumpstercontrols.io/junk-checkout/slug), loads [ { load_fraction, price, notes, is_default, sort_order } ] (for example 1/4, 1/2, 3/4, full, with the price in dollars), windows [ { start, end } ] (HH:MM arrival windows), same_day { enabled, cutoff }, max_advance_days, photo (off or optional), locations (curbside, inside_home, garage, construction_site), not_accepted [], extra_fee [], terms { use_standard, custom_content }, cancellation_policy, card_fee_handling. Render the load cards from loads and the window picker from windows.
  2. ## GET /junk/availability?from&to
    Response data: today, from, to, max_advance_days, same_day, days [ { date, open, windows [ { start, end } ], reason } ]. For each day you get the windows that still fit (same-day cutoff, max advance, weekly days off, holidays and blackout dates are already applied). reason, when a day is closed: past_date, same_day_closed, too_far, non_working_day, blackout or no_window.
  3. ## POST /junk/quote
    ```
    { "load_fraction": "1/2", "promo_code": "SAVE10" }
    ```
    Response data: load_fraction, currency, lines { base, promo_discount }, promo, total and total_cents, processing_fee and processing_fee_cents, card_fee_handling, gross_total and gross_total_cents, note. Junk is priced by load size at booking; the crew confirms the load on site and the company handles any difference afterwards (load adjustment), outside this API.
  4. ## POST /junk/intents
    ```
    {
    "load_fraction": "1/2",
    "job_date": "2026-11-10", "time_window_start": "08:00", "time_window_end": "12:00",
    "address_line1": "123 Main St", "city": "Orlando", "state": "FL", "zip": "32801",
    "job_type": "garage", "notes": "Gate code 1234", "crew_size": 2,
    "placement_lat": 28.5383, "placement_lng": -81.3792,
    "customer": { "name": "Jane Doe", "email": "jane@example.com", "phone": "4075550100" },
    "promo_code": "SAVE10", "terms_accepted": true, "session_id": "optional"
    }
    ```
    Required: load_fraction, job_date, time_window_start and time_window_end (a window from /junk/config or /junk/availability), address_line1, zip, customer, terms_accepted = true. The response has the same shape as the dumpster /intents (session_id, payment_intent_id, client_secret, stripe, amount). Slot errors come back as 409 slot_past_date, slot_same_day_closed, slot_too_far, slot_non_working_day, slot_blackout, slot_bad_window or slot_bad_date with field job_date.
  5. ## Card, confirm and photos
    Take the card exactly as in lesson 7. Then POST /junk/confirm { session_id, payment_intent_id } creates the job: response data state confirmed, job_number, job_id, photos (a note when photos are accepted). When the company accepts photos, send up to 3 within 2 hours with POST /junk/photos { session_id, content_base64 } (JPEG, PNG or WebP, 8 MB max; the response carries the stored url). GET /sessions/:id works for junk sessions too, with job_number and job_id.

What happens next

  • The job appears in Junk Removal on the dispatch board, the customer gets the confirmation, and the company's junk webhooks and messages work as for any online junk job.

Troubleshooting

/junk/quote answers not_found.

The load_fraction is not one of the company's active load prices. Use exactly the load_fraction strings from GET /junk/config.

/junk/intents answers booking_offline but dumpster /intents works.

Junk removal has its own online switch in Online Booking (the junk card). The company has to turn it on.

Related guides

© 2026 Dumpster Controls. All rights reserved. Made in the USA.

Frequently asked questions

Is Dumpster Controls really free?

Yes. The software is free: dispatch, online booking, the driver app, invoicing, the Tresha AI assistant and every other feature, with no monthly fee, no trial period and no credit card to sign up. The only cost on the free plan is optional card processing when a customer pays by card through the platform: 2.99% plus $3.99 per transaction on the free plan. An optional Unlimited plan at $169 per month lowers that to 2.99% plus $0.30. Prices as published on dumpstercontrols.io/pricing on 2026-09-23.

Do you charge per driver, per truck or per order?

No. There is no per-driver, per-truck, per-user or per-order fee, and no order limit. A company with one truck and a company with twenty pay the same for the software: nothing.

Is there a contract?

No. There is no contract, no minimum term and no setup fee. You create the account yourself, and on the free plan there is nothing to cancel because nothing is billed. The optional Unlimited plan is billed month to month.

Which countries and languages are supported?

Dumpster Controls serves hauling companies in the United States and Canada. The app interface and the Tresha AI assistant are available in English, Spanish and Portuguese. The public pages, such as the blog, the help center and the landfill finder, are in English.

How do I switch from another dumpster software?

Create a free account at dumpstercontrols.io/login, with no sales call and no credit card. Then import your customers from a CSV file using the template provided in the app; past orders can also be imported from a CSV. Container sizes and pricing are set up in Settings. The landfill database, with 1,750 active US and Canadian landfills as counted on 2026-10-01, is already loaded, so disposal sites do not need to be typed in. Step-by-step guides are at dumpstercontrols.io/help.