The Wash Party REST API lets Rolling Suds operators and integration partners create parties, manage rosters, and sync jobs to field management tools like Workiz.
Wash Party exposes a REST API over HTTPS. All requests and responses use JSON. The base URL for all endpoints is:
https://washparty.net/apiCurrent API Status
The Wash Party API is currently in private beta. Operator API keys are available to Rolling Suds franchisees and approved integration partners. Email hello@washparty.net to request access.
The Wash Party API uses session-based auth for the admin panel and Bearer token auth for programmatic access. Include your API key in the Authorization header:
Authorization: Bearer wp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAPI keys are prefixed with wp_live_ (production) or wp_test_ (sandbox). Keep your key secret — it grants full operator access.
Test Environment
wp_test_…No real charges, no Workiz jobs sent
Live Environment
wp_live_…Real Stripe charges + Workiz sync
A Party represents a group booking event for a specific street. Parties move through a lifecycle: pending → active → confirmed → completed (or cancelled).
/api/party/:codeRetrieve a party by its short code. Returns status, participants, and tier info.
/api/party/createCreate a new Wash Party. Requires street, city, zip, serviceDate, and captain details.
/api/party/:code/joinAdd a participant to an open party. Returns a Stripe checkout URL if a deposit is required.
/api/party/searchFind active parties by street name and/or ZIP code.
{
"id": "clxxx...",
"code": "OAK4287",
"street": "Oak Glen Drive",
"city": "Collierville",
"zip": "38017",
"status": "active", // pending | active | confirmed | completed | cancelled
"serviceDate": "2026-06-15T00:00:00.000Z",
"deadlineAt": "2026-06-08T00:00:00.000Z",
"depositRequired": true,
"depositCents": 2500,
"captainMessage": "Let's get the whole block clean!",
"participants": [ /* ParticipantObject[] */ ]
}Each participant is a homeowner who has reserved a spot on a party. Their status tracks the payment lifecycle.
/api/party/:code/joinJoin a party. Body: { firstName, lastName, houseNumber, phone, email, selectedServiceCents[], referralCode?, specialInstructions? }
{
"id": "clyyy...",
"firstName": "Jane",
"lastName": "D",
"houseNumber": "104",
"joinIndex": 3,
"status": "confirmed", // pending_payment | confirmed | cancelled | refunded
"earlyBirdEligible": true,
"referralCode": "JAN8821"
}When joining, the API returns a quote showing group discount, early-bird bonus, and amount due:
// POST /api/party/:code/join response
{
"data": {
"checkoutUrl": "https://checkout.stripe.com/...", // if deposit required
"successUrl": "/party/OAK4287?success=1&pid=...", // if no deposit
"quote": {
"subtotal": 52500,
"tierDiscount": 7875,
"earlyBirdDiscount": 2625,
"discountedSubtotal": 42000,
"depositCents": 2500,
"dueAtServiceCents": 39500
}
}
}Find active parties near an address using the search endpoint.
/api/party/search?street=Oak+Glen&zip=38017Returns up to 10 active parties matching the street and/or ZIP. Cancelled and completed parties are excluded.
// GET /api/party/search?street=Oak&zip=38017
{
"data": [
{
"code": "OAK4287",
"street": "Oak Glen Drive",
"city": "Collierville",
"zip": "38017",
"status": "active",
"participant_count": 4
}
]
}Admin endpoints require an active operator session (cookie) or an admin-scoped API key. These power the Operator Dashboard.
/api/admin/partiesList all parties with status, participant counts, and revenue.
/api/admin/parties/createCreate a party on behalf of an operator (no captain deposit required).
/api/admin/parties/:id/extendExtend the party deadline by a specified number of days.
/api/admin/parties/:id/reactivateReactivate a cancelled or expired party with a new 7-day deadline.
/api/admin/parties/:id/cancelCancel a party and issue Stripe refunds to all confirmed participants.
/api/admin/parties/:id/completeMark a party as completed and trigger post-service review emails.
/api/admin/parties/:id/send-to-workizPush confirmed job roster to Workiz as individual service jobs.
/api/admin/parties/:id/notify-deadlineSend deadline reminder SMS/email to all pending participants.
/api/admin/export?partyCode=OAK4287Download party roster as CSV (name, address, services, amounts).
Wash Party fires webhooks for key lifecycle events. Configure your endpoint URL in the operator dashboard under Settings → Integrations.
party.createdA new party was created by a block captain.party.confirmedParty reached 3+ confirmed homes and is now locked.party.cancelledParty was cancelled. Refunds have been issued.participant.joinedA new participant paid their deposit and joined.participant.cancelledA participant cancelled their reservation.workiz.sync_completeConfirmed roster was successfully sent to Workiz.POST https://your-endpoint.com/webhooks/washparty
Content-Type: application/json
X-WashParty-Signature: sha256=<hmac>
{
"event": "participant.joined",
"timestamp": "2026-06-01T14:22:00.000Z",
"data": {
"partyCode": "OAK4287",
"participantId": "clyyy...",
"depositCents": 2500,
"servicesChosen": ["house", "driveway"]
}
}All error responses return a consistent JSON shape with a machine-readable code:
{
"error": {
"code": "PARTY_DEADLINE_PASSED",
"message": "The sign-up deadline for this party has passed.",
"details": {}
},
"requestId": "941cf436-9dcd-..."
}VALIDATION_ERRORMissing or invalid request fields.AUTH_ERRORMissing or expired session / API key.NOT_FOUNDParty or participant not found.PARTY_FULLParty has reached the 15-home maximum.PARTY_DEADLINE_PASSEDThe sign-up window has closed.PARTY_CANCELLEDCannot join a cancelled party.DUPLICATE_EMAILEmail already registered for this party.INTERNAL_ERRORUnexpected server error. Contact support with the requestId.Public endpoints (party lookup, search, join) are rate-limited to 60 requests / minute per IP. Admin API endpoints are limited to 300 requests / minute per key. Rate limit headers are included in every response:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 47
X-RateLimit-Reset: 1717257600Webhook delivery is retried up to 5 times with exponential backoff (2s, 4s, 8s, 16s, 32s). Endpoints must return 2xx within 10 seconds to be considered successful.
The Wash Party API is available to Rolling Suds franchisees and approved technology partners. Reach out to get your API key and integration support.
REQUEST API ACCESS →