CleanItAll API Documentation
Integrate CleanItAll with your systems using our RESTful API. This documentation covers authentication, available endpoints, webhooks, and best practices.
Base URL: https://app.cleanitall.io/api/v1
Quick Start
Get started with the CleanItAll API in minutes
-
Create an API Key
Log in to CleanItAll, go to Settings → API Keys, and create a new key with the required permissions.
-
Make Your First Request
Use your API key in the X-API-Key header:
curl -X GET “https://app.cleanitall.io/api/v1/jobs” \ -H “X-API-Key: jt_live_your_api_key_here” -
Handle the Response
All responses are JSON formatted. Check the status code and parse the response body.
Authentication
All API requests require authentication using an API key. Include your key in one of these ways:
X-API-Key Header (Recommended)
Authorization Bearer Header
Keep your API key secure. Never expose it in client-side code or public repositories. If you believe your key has been compromised, regenerate it immediately in the dashboard.
Rate Limiting
API requests are limited to 1000 requests per hour per API key. Rate limit information is included in response headers:
X-RateLimit-Limit– Maximum requests per hourX-RateLimit-Remaining– Requests remaining in current windowX-RateLimit-Reset– Unix timestamp when the limit resets
API Endpoints
Jobs
/api/v1/jobs
read
List all jobs with optional filtering
Query Parameters
status– Filter by status (pending, in_progress, completed, cancelled)customer_id– Filter by customer IDassigned_to– Filter by assigned team member IDscheduled_date– Filter by date (YYYY-MM-DD)limit– Results per page (default: 50, max: 100)offset– Pagination offset
Example Request
/api/v1/jobs/:id
read
Get a single job by ID
/api/v1/jobs
write
Create a new job
Request Body
/api/v1/jobs/:id
write
Update an existing job. Only include fields you want to change.
/api/v1/jobs/:id/complete
write
Mark a job as completed
Request Body
/api/v1/jobs/:id
delete
Delete a job
Customers
/api/v1/customers
read
List all customers
Query Parameters
search– Search by name, email, or phonelimit– Results per page (default: 50)offset– Pagination offset
/api/v1/customers
write
Create a new customer
Request Body
/api/v1/customers/:id
write
Update an existing customer
Invoices
/api/v1/invoices
read
List all invoices
Query Parameters
status– Filter by status (draft, pending, paid, overdue, cancelled)customer_id– Filter by customerfrom_date– From date (YYYY-MM-DD)to_date– To date (YYYY-MM-DD)
/api/v1/invoices
write
Create a new invoice
Request Body
/api/v1/invoices/:id/send
write
Send an invoice to the customer via email
/api/v1/invoices/:id/mark-paid
write
Mark an invoice as paid
Request Body
Payments
/api/v1/payments
read
List all payments
Query Parameters
customer_id– Filter by customerinvoice_id– Filter by invoicefrom_date– From date (YYYY-MM-DD)to_date– To date (YYYY-MM-DD)
/api/v1/payments
write
Record a payment
Request Body
Webhooks
Receive real-time notifications when events occur in your CleanItAll account. Webhooks are HTTP callbacks that send data to your specified URL when triggered by events.
Available Events
Job Events
job.createdjob.updatedjob.completedjob.cancelled
Invoice Events
invoice.createdinvoice.sentinvoice.paidinvoice.overdue
Customer Events
customer.createdcustomer.updatedcustomer.deleted
Payment Events
payment.received
Webhook Payload
Headers
X-Webhook-Signature– HMAC-SHA256 signature for verificationX-Webhook-Event– Event type (e.g., job.created)X-Webhook-Id– Unique webhook delivery ID
Example Payload
Verifying Webhook Signatures
Always verify webhook signatures to ensure requests are from CleanItAll:
Error Handling
The API uses standard HTTP status codes to indicate success or failure:
| Code | Description |
|---|---|
| 200 | Success – Request completed successfully |
| 201 | Created – Resource created successfully |
| 400 | Bad Request – Invalid parameters or missing required fields |
| 401 | Unauthorized – Invalid or missing API key |
| 403 | Forbidden – API key lacks required scope |
| 404 | Not Found – Resource does not exist |
| 429 | Too Many Requests – Rate limit exceeded |
| 500 | Internal Server Error – Something went wrong on our end |
Error Response Format
API Scopes
API keys can be configured with different scopes to limit access:
| Scope | Description |
|---|---|
| read | Read-only access to resources (GET requests) |
| write | Create and update resources (POST, PUT, PATCH requests) |
| delete | Delete resources (DELETE requests) |
Support
Need help with the API? We’re here to assist:
- Email: support@cleanitall.io
- Documentation: In-App API Docs
- Status Page: System Status
