Introduction
Sweep&Go - Open API description
This documentation aims to provide all the information you need to work with our API.
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve your token by visiting your dashboard and clicking Generate API token.
Access token
Endpoints for generating, retrieving, and managing API access tokens.
List API access tokens
Returns all API access tokens for the given organization, including masked token values, webhook URLs, and enabled events.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/token_generate/access_tokens?organization_id=2"const url = new URL(
"https://openapi.sweepandgo.com/api/token_generate/access_tokens"
);
const params = {
"organization_id": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
fetch(url, {
method: "GET",
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/token_generate/access_tokens';
$response = $client->get(
$url,
[
'query' => [
'organization_id' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/token_generate/access_tokens'
params = {
'organization_id': '2',
}
response = requests.request('GET', url, params=params)
response.json()Example response (200):
{
"data": [
{
"id": 12,
"token": "************************************************************XLtm",
"webhooks_url": "https://example.com/webhooks",
"description": "First token",
"enabled_events": [
"client:client_onboarding_onetime",
"client:client_recurring_employee_portal"
]
},
{
"id": 18,
"token": "************************************************************9P4a",
"webhooks_url": "https://example.com/webhooks",
"description": "Second token",
"enabled_events": [
"client:client_onboarding_onetime"
]
}
],
"webhooks": {
"client:client_onboarding_onetime": "Client - client onboarding recurring",
"client:client_recurring_employee_portal": "Client - client onboarding onetime"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Generate API access token
Creates a new API access token for the given organization.
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/token_generate/access_token" \
--header "Content-Type: application/json" \
--data "{
\"organization_id\": 2,
\"webhooks_url\": \"https:\\/\\/example.com\\/webhooks\",
\"enabled_events\": [
\"occaecati\"
],
\"description\": \"Webhooks for client onboarding events\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/token_generate/access_token"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"organization_id": 2,
"webhooks_url": "https:\/\/example.com\/webhooks",
"enabled_events": [
"occaecati"
],
"description": "Webhooks for client onboarding events"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/token_generate/access_token';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
],
'json' => [
'organization_id' => 2,
'webhooks_url' => 'https://example.com/webhooks',
'enabled_events' => [
'occaecati',
],
'description' => 'Webhooks for client onboarding events',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/token_generate/access_token'
payload = {
"organization_id": 2,
"webhooks_url": "https:\/\/example.com\/webhooks",
"enabled_events": [
"occaecati"
],
"description": "Webhooks for client onboarding events"
}
headers = {
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"token": "lrLxIj3PmNkSKdsFdTYYrfLFSungwVl4vXUk9alQo3Zu6cCGpslCGfHI9k2wXLtm",
"_id": 12
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get API access token details
Returns the full API token after it has been generated.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/token_generate/access_token/12"const url = new URL(
"https://openapi.sweepandgo.com/api/token_generate/access_token/12"
);
fetch(url, {
method: "GET",
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/token_generate/access_token/12';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/token_generate/access_token/12'
response = requests.request('GET', url, )
response.json()Example response (200):
{
"token": "lrLxIj3PmNkSKdsFdTYYrfLFSungwVl4vXUk9alQo3Zu6cCGpslCGfHI9k2wXLtm",
"_id": 12
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete API access token
Deletes an API access token.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/token_generate/access_token/12/delete"const url = new URL(
"https://openapi.sweepandgo.com/api/token_generate/access_token/12/delete"
);
fetch(url, {
method: "GET",
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/token_generate/access_token/12/delete';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/token_generate/access_token/12/delete'
response = requests.request('GET', url, )
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Tests
Endpoints used for health and availability checks.
API health check
Returns the current status of the API. This endpoint can be used by monitoring services to verify that the API is running and reachable.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/health"const url = new URL(
"https://openapi.sweepandgo.com/api/health"
);
fetch(url, {
method: "GET",
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/health';
$response = $client->get($url);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/health'
response = requests.request('GET', url, )
response.json()Example response (200):
{
"status": "OK",
"version": "v1"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Test v1 API endpoint
requires authentication
Echoes back the received request payload and triggers a test webhook event for the specified organization.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/welcome" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/welcome"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/welcome';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/welcome'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": "v1",
"request": {
"example_param": "example_value"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Test v2 API endpoint
requires authentication
Echoes back the received request payload.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/welcome" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/welcome"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/welcome';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/welcome'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"success": "v2",
"request": {
"example_param": "example_value"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Clients list
Endpoints for retrieving and searching clients within an organization.
Get active clients
requires authentication
Returns a paginated list of active clients.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/clients/active?page=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/clients/active"
);
const params = {
"page": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/clients/active';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'page' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/clients/active'
params = {
'page': '2',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"data": [
{
"client": "rcl_MTPQPRUUUY7G",
"status": "active",
"type": "employee_portal",
"email": "demo@mail.com",
"first_name": "John",
"last_name": "Doe",
"address": "3289 Summit Street",
"zip_code": "52801",
"home_phone": null,
"cell_phone": "2344328676",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"subscription_names": "2w-3d,Deodorising",
"one_time_client": false,
"channel": "sms",
"on_the_way": true,
"completed": true,
"off_schedule": false,
"tracking_field": "utm_campaign=blog_post &utm_medium=social&utm_source=facebook",
"service_days": "Monday",
"assigned_to": "Alissa Doe",
"cleanup_frequency": "once_a_week"
}
],
"paginate": {
"total": 1,
"count": 1,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get active clients without an active subscription
requires authentication
Returns a paginated list of active clients that do not have any active subscriptions.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/clients/active_no_subscription?page=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/clients/active_no_subscription"
);
const params = {
"page": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/clients/active_no_subscription';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'page' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/clients/active_no_subscription'
params = {
'page': '2',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"data": [
{
"client": "rcl_MTPQPRUUUY7G",
"status": "active",
"type": "employee_portal",
"email": "demo@mail.com",
"first_name": "John",
"last_name": "Doe",
"address": "3289 Summit Street",
"zip_code": "52801",
"home_phone": null,
"cell_phone": "2344328676",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"channel": "sms",
"on_the_way": true,
"completed": true,
"off_schedule": false,
"subscription_names": "2w-3d,Deodorising",
"one_time_client": false,
"tracking_field": "utm_campaign=blog_post &utm_medium=social&utm_source=facebook",
"service_days": "Monday",
"assigned_to": "Alissa Doe",
"cleanup_frequency": "once_a_week"
}
],
"paginate": {
"total": 1,
"count": 1,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get inactive clients
requires authentication
Returns a paginated list of inactive clients.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/clients/inactive?page=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/clients/inactive"
);
const params = {
"page": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/clients/inactive';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'page' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/clients/inactive'
params = {
'page': '2',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"data": [
{
"client": "rcl_MTPQPRUUUY7G",
"status": "inactive",
"type": "employee_portal",
"email": "demo@mail.com",
"first_name": "John",
"last_name": "Doe",
"address": "3289 Summit Street",
"zip_code": "52801",
"home_phone": null,
"cell_phone": "2344328676",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"channel": "sms",
"on_the_way": true,
"completed": true,
"off_schedule": false,
"subscription_names": "",
"one_time_client": false,
"tracking_field": "utm_campaign=blog_post &utm_medium=social&utm_source=facebook",
"service_days": "Monday",
"assigned_to": "Alissa Doe",
"cleanup_frequency": "once_a_week"
}
],
"paginate": {
"total": 1,
"count": 1,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get client details and payments
requires authentication
Returns client details along with payment history.
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/clients/client_details" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"client\": \"rcl_MTPQPRUUUY7G\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/clients/client_details"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"client": "rcl_MTPQPRUUUY7G"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/clients/client_details';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'client' => 'rcl_MTPQPRUUUY7G',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/clients/client_details'
payload = {
"client": "rcl_MTPQPRUUUY7G"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"client": "rcl_MTPQPRUUUY7G",
"status": "active",
"type": "employee_portal",
"email": "demo@mail.com",
"first_name": "John",
"last_name": "Doe",
"address": "3289 Summit Street",
"zip_code": "52801",
"home_phone": "2344328656",
"cell_phone": "2344328676",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"channel": "sms",
"on_the_way": true,
"completed": true,
"off_schedule": false,
"tracking_field": "utm_campaign=blog_post &utm_medium=social&utm_source=facebook",
"service_days": "Monday",
"assigned_to": "Alissa Doe",
"cleanup_frequency": "once_a_week",
"subscription_names": "2d1W",
"sum_payments": 10,
"payments": [
{
"id": 1049219,
"date": "2024-05-01",
"amount": 139.43,
"tip_amount": "5.00",
"status": "succeeded",
"type": "credit_card",
"description": "Payment for invoice(s) 199-66362-240501-2-1294170",
"created_at": "2024-05-01 11:19:38"
},
{
"id": 1048709,
"date": "2024-05-01",
"amount": 139.43,
"tip_amount": "0.00",
"status": "failed",
"type": "credit_card",
"description": "Payment for invoice(s) 199-66362-240501-2-1294170",
"created_at": "2024-05-01 11:11:13"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Search client by email
requires authentication
Finds a client by email address and returns basic client details.
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/clients/client_search" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"email\": \"john@doe.com\",
\"status\": \"active\",
\"latest\": true
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/clients/client_search"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "john@doe.com",
"status": "active",
"latest": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/clients/client_search';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'email' => 'john@doe.com',
'status' => 'active',
'latest' => true,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/clients/client_search'
payload = {
"email": "john@doe.com",
"status": "active",
"latest": true
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"client": "rcl_MTPQPRUUUY7G",
"status": "active",
"type": "employee_portal",
"email": "john@doe.com",
"first_name": "John",
"last_name": "Doe",
"address": "3289 Summit Street",
"zip_code": "52801",
"home_phone": "2344328656",
"cell_phone": "2344328676",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"channel": "sms",
"on_the_way": true,
"completed": true,
"off_schedule": false,
"tracking_field": "utm_campaign=blog_post &utm_medium=social&utm_source=facebook",
"service_days": "Monday",
"assigned_to": "Alissa Doe",
"cleanup_frequency": "once_a_week",
"subscription_names": "2d1W"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Onboarding new clients
Endpoints for onboarding new clients.
Onboard a new residential client in Sweep&Go
requires authentication
Registers a new residential client in Sweep&Go. This endpoint accepts client details, service preferences, notifications, dog information and optional payment details.
Example request:
curl --request PUT \
"https://openapi.sweepandgo.com/api/v1/residential/onboarding" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"zip_code\": \"12110\",
\"number_of_dogs\": 2,
\"last_time_yard_was_thoroughly_cleaned\": \"one_week\",
\"clean_up_frequency\": \"once_a_week\",
\"first_name\": \"John\",
\"last_name\": \"Doe\",
\"email\": \"mail@email.com\",
\"city\": \"Latham\",
\"home_address\": \"1494 Ben Street\",
\"state\": \"TX\",
\"home_phone_number\": \"7897666790\",
\"cell_phone_number\": \"9897633690\",
\"initial_cleanup_required\": 1,
\"cleanup_notification_type\": \"on_the_way, completed\",
\"cleanup_notification_channel\": \"sms\",
\"how_heard_about_us\": \"social_media\",
\"how_heard_answer\": \"Facebook\",
\"additional_comment\": \"Please clean my yard.\",
\"credit_card_token\": \"tok_5678967890678 or 678987678909876\",
\"name_on_card\": \"John Doe\",
\"postal\": \"28301\",
\"expiry\": \"0924\",
\"dog_name\": [
\"quo\"
],
\"safe_dog\": [
\"consequatur\"
],
\"dog_breed\": [
\"architecto\"
],
\"dog_comment\": [
\"accusantium\"
],
\"marketing_allowed\": 1,
\"marketing_allowed_source\": \"open_api\",
\"areas_to_clean\": \"Front Yard, Back Yard\",
\"gated_community\": \"67890\",
\"gate_location\": \"left\",
\"gate_code\": \"1234\",
\"tracking_field\": \"utm_campaign=blog_post&utm_medium=social&utm_source=facebook\",
\"cross_sells\": [
1,
2,
5
],
\"terms_open_api\": 1
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v1/residential/onboarding"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"zip_code": "12110",
"number_of_dogs": 2,
"last_time_yard_was_thoroughly_cleaned": "one_week",
"clean_up_frequency": "once_a_week",
"first_name": "John",
"last_name": "Doe",
"email": "mail@email.com",
"city": "Latham",
"home_address": "1494 Ben Street",
"state": "TX",
"home_phone_number": "7897666790",
"cell_phone_number": "9897633690",
"initial_cleanup_required": 1,
"cleanup_notification_type": "on_the_way, completed",
"cleanup_notification_channel": "sms",
"how_heard_about_us": "social_media",
"how_heard_answer": "Facebook",
"additional_comment": "Please clean my yard.",
"credit_card_token": "tok_5678967890678 or 678987678909876",
"name_on_card": "John Doe",
"postal": "28301",
"expiry": "0924",
"dog_name": [
"quo"
],
"safe_dog": [
"consequatur"
],
"dog_breed": [
"architecto"
],
"dog_comment": [
"accusantium"
],
"marketing_allowed": 1,
"marketing_allowed_source": "open_api",
"areas_to_clean": "Front Yard, Back Yard",
"gated_community": "67890",
"gate_location": "left",
"gate_code": "1234",
"tracking_field": "utm_campaign=blog_post&utm_medium=social&utm_source=facebook",
"cross_sells": [
1,
2,
5
],
"terms_open_api": 1
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/residential/onboarding';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'zip_code' => '12110',
'number_of_dogs' => 2,
'last_time_yard_was_thoroughly_cleaned' => 'one_week',
'clean_up_frequency' => 'once_a_week',
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'mail@email.com',
'city' => 'Latham',
'home_address' => '1494 Ben Street',
'state' => 'TX',
'home_phone_number' => '7897666790',
'cell_phone_number' => '9897633690',
'initial_cleanup_required' => 1,
'cleanup_notification_type' => 'on_the_way, completed',
'cleanup_notification_channel' => 'sms',
'how_heard_about_us' => 'social_media',
'how_heard_answer' => 'Facebook',
'additional_comment' => 'Please clean my yard.',
'credit_card_token' => 'tok_5678967890678 or 678987678909876',
'name_on_card' => 'John Doe',
'postal' => '28301',
'expiry' => '0924',
'dog_name' => [
'quo',
],
'safe_dog' => [
'consequatur',
],
'dog_breed' => [
'architecto',
],
'dog_comment' => [
'accusantium',
],
'marketing_allowed' => 1,
'marketing_allowed_source' => 'open_api',
'areas_to_clean' => 'Front Yard, Back Yard',
'gated_community' => '67890',
'gate_location' => 'left',
'gate_code' => '1234',
'tracking_field' => 'utm_campaign=blog_post&utm_medium=social&utm_source=facebook',
'cross_sells' => [
1,
2,
5,
],
'terms_open_api' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/residential/onboarding'
payload = {
"zip_code": "12110",
"number_of_dogs": 2,
"last_time_yard_was_thoroughly_cleaned": "one_week",
"clean_up_frequency": "once_a_week",
"first_name": "John",
"last_name": "Doe",
"email": "mail@email.com",
"city": "Latham",
"home_address": "1494 Ben Street",
"state": "TX",
"home_phone_number": "7897666790",
"cell_phone_number": "9897633690",
"initial_cleanup_required": 1,
"cleanup_notification_type": "on_the_way, completed",
"cleanup_notification_channel": "sms",
"how_heard_about_us": "social_media",
"how_heard_answer": "Facebook",
"additional_comment": "Please clean my yard.",
"credit_card_token": "tok_5678967890678 or 678987678909876",
"name_on_card": "John Doe",
"postal": "28301",
"expiry": "0924",
"dog_name": [
"quo"
],
"safe_dog": [
"consequatur"
],
"dog_breed": [
"architecto"
],
"dog_comment": [
"accusantium"
],
"marketing_allowed": 1,
"marketing_allowed_source": "open_api",
"areas_to_clean": "Front Yard, Back Yard",
"gated_community": "67890",
"gate_location": "left",
"gate_code": "1234",
"tracking_field": "utm_campaign=blog_post&utm_medium=social&utm_source=facebook",
"cross_sells": [
1,
2,
5
],
"terms_open_api": 1
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Leads list
Endpoints for retrieving leads within an organization.
Get leads
requires authentication
Returns a paginated list of leads.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/leads/list?page=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/leads/list"
);
const params = {
"page": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/leads/list';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'page' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/leads/list'
params = {
'page': '2',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"data": [
{
"lead": "rld_MTPQPRUUUY7G",
"status": "active",
"type": "onboarding_form",
"email": "demo@mail.com",
"name": "John Doe",
"address": "3289 Summit Street",
"zip_code": "52801",
"home_phone": null,
"cell_phone": "2344328676",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api"
}
],
"paginate": {
"total": 1,
"count": 1,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get out of area leads
requires authentication
Returns a paginated list of leads that are out of service area.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/leads/out_of_service?page=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/leads/out_of_service"
);
const params = {
"page": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/leads/out_of_service';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'page' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/leads/out_of_service'
params = {
'page': '2',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"data": [
{
"lead": "rld_MTPQPRUUUY7G",
"status": "lead",
"type": "out_of_area",
"email": "demo@mail.com",
"name": "John Doe",
"address": "3289 Summit Street",
"zip_code": "52801",
"home_phone": null,
"cell_phone": "2344328676",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api"
}
],
"paginate": {
"total": 1,
"count": 1,
"per_page": 10,
"current_page": 1,
"total_pages": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Dispatch Board
Endpoints for retrieving list of jobs.
Dispatch Board
requires authentication
Returns the Dispatch Board job list for the selected date.
Notes:
- A job with
id> 0 represents an already dispatched job record. - A job with
id= 0 represents an undispatched job.
Supported job status values:
- pending (1)
- completed (2)
- skipped (3)
- missed (4)
- started (5)
- dispatched (6)
Supported job types:
- custom
- initial
- one_time
- reclean
- recurring
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/dispatch_board/jobs_for_date?date=2022-03-28" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/dispatch_board/jobs_for_date"
);
const params = {
"date": "2022-03-28",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/dispatch_board/jobs_for_date';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'date' => '2022-03-28',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/dispatch_board/jobs_for_date'
params = {
'date': '2022-03-28',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"data": [
{
"id": 0,
"client_location_id": 2603,
"client_id": null,
"commercial_location_id": 142,
"commercial_client_id": 84,
"pricing_plan_name": "Pet waste stations",
"commercial": 1,
"full_name": "Little Lambs Foundation for Kids",
"address": "1011 W 400 N",
"city": "Logan",
"zip": "84321",
"state_name": "Utah",
"clean_up_frequency": "1xW",
"count_cross_sells": 1,
"assigned_to_name": "Bart Cage",
"assigned_to_id": 265,
"estimate_time": "00:15",
"type": "recurring",
"end_time": null,
"start_time": null,
"status_id": 1,
"status_name": "pending",
"duration": "-",
"gate_code": null,
"gated_community": null,
"lat": 41.7389868,
"lng": -111.860119,
"number_of_dogs": null,
"safe_dogs": null,
"home_phone": "5678904567",
"cell_phone": "4567845678",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"email": "demo@demo.com"
},
{
"id": 0,
"client_location_id": 2726,
"client_id": 1580,
"commercial_location_id": null,
"commercial_client_id": null,
"pricing_plan_name": "Regular Plan",
"commercial": 0,
"full_name": "Cara Deen",
"address": "625 South 100 West",
"city": "Garland",
"zip": "84312",
"state_name": "Utah",
"clean_up_frequency": "two_times_a_week",
"count_cross_sells": 0,
"assigned_to_name": "Richard Dawson",
"assigned_to_id": 258,
"estimate_time": "00:15",
"type": "recurring",
"end_time": null,
"start_time": null,
"status_id": 1,
"status_name": "pending",
"duration": "-",
"gate_code": null,
"gated_community": null,
"lat": 41.7344582,
"lng": -112.1634671,
"number_of_dogs": 2,
"safe_dogs": "",
"home_phone": "5678904567",
"cell_phone": "4567845678",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"email": "demo@demo.com"
},
{
"id": 156608,
"client_location_id": 2325,
"type": "recurring",
"organization_id": 158,
"client_id": null,
"full_name": "Community Garden",
"address": "468 1/2 S 200 W",
"city": "Logan",
"zip": "84321",
"state_name": "Utah",
"assigned_to_id": 265,
"assigned_to_name": "Bart Cage",
"end_time": null,
"start_time": null,
"status_id": 6,
"lat": 41.7228185,
"lng": -111.8397648,
"estimate_time": "00:15",
"job_image": null,
"image_for_client": null,
"note": null,
"note_for_client": null,
"order": 1,
"arrival": 4,
"distance": "3.00",
"skip_reason_title": null,
"gate_code": null,
"count_cross_sells": 1,
"number_of_dogs": null,
"safe_dogs": null,
"gated_community": null,
"commercial": 1,
"work_areas": null,
"commercial_client_id": 76,
"commercial_location_id": 127,
"start_lat": null,
"start_lng": null,
"start_distance": null,
"clean_up_frequency": null,
"end_lat": null,
"end_lng": null,
"end_distance": null,
"skip_lat": null,
"skip_lng": null,
"skip_distance": null,
"status_name": "dispatched",
"duration": "-",
"home_phone": "5678904567",
"cell_phone": "4567845678",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"email": "demo@demo.com"
},
{
"id": 156890,
"client_location_id": 2578,
"type": "custom",
"organization_id": 158,
"client_id": 1567,
"full_name": "Carolina Wozniacki",
"address": "149 W 300 N",
"city": "Logan",
"zip": "84321",
"state_name": "Utah - UT",
"assigned_to_id": 246,
"assigned_to_name": "Ena Adamz",
"end_time": "2022-03-29 08:24:07",
"start_time": "2022-03-29 08:22:08",
"status_id": 2,
"lat": 41.7374576,
"lng": -111.8385534,
"estimate_time": "00:15",
"job_image": null,
"image_for_client": null,
"note": "",
"note_for_client": "",
"order": 5,
"arrival": null,
"distance": null,
"skip_reason_title": null,
"gate_code": null,
"count_cross_sells": 0,
"number_of_dogs": 1,
"safe_dogs": "",
"gated_community": null,
"commercial": 0,
"work_areas": null,
"commercial_client_id": null,
"commercial_location_id": null,
"start_lat": null,
"start_lng": null,
"start_distance": null,
"clean_up_frequency": "bi_weekly",
"end_lat": null,
"end_lng": null,
"end_distance": null,
"skip_lat": null,
"skip_lng": null,
"skip_distance": null,
"status_name": "completed",
"duration": "00:21",
"home_phone": "5678904567",
"cell_phone": "4567845678",
"marketing_allowed": 1,
"marketing_allowed_updated_at": "2025-03-05 10:20:55",
"marketing_allowed_source": "open_api",
"email": "demo@demo.com"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Access token checker
Endpoints for retrieving API access token details.
Show access token details
requires authentication
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/check_token?token=vUcSxeEgTgg0I65bPEgKBqU0AjBRz8cy61843egzKkI3hAcYJ9ErNYe2MTEoIEWo" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/check_token"
);
const params = {
"token": "vUcSxeEgTgg0I65bPEgKBqU0AjBRz8cy61843egzKkI3hAcYJ9ErNYe2MTEoIEWo",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/check_token';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'token' => 'vUcSxeEgTgg0I65bPEgKBqU0AjBRz8cy61843egzKkI3hAcYJ9ErNYe2MTEoIEWo',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/check_token'
params = {
'token': 'vUcSxeEgTgg0I65bPEgKBqU0AjBRz8cy61843egzKkI3hAcYJ9ErNYe2MTEoIEWo',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"webhooks_url": "https://example.com/webhooks",
"enabled_events": "[\"lead:in_service_area\",\"lead:delete\",\"client:changed_status\"]",
"_id": 1
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Multi organization zip code check
Endpoints for checking which organization should serve a given ZIP code.
Find the nearest eligible organization for a ZIP code
requires authentication
Returns the registration URL and the selected organization slug based on the provided ZIP code and a list of organization slugs.
If the ZIP code is not in any service area, the nearest organization is returned and out_of_area will be 1.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/check_zip_code_multi_organizations?zip_code=12345&slugs[]=assumenda" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/check_zip_code_multi_organizations"
);
const params = {
"zip_code": "12345",
"slugs[0]": "assumenda",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/check_zip_code_multi_organizations';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'zip_code' => '12345',
'slugs[0]' => 'assumenda',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/check_zip_code_multi_organizations'
params = {
'zip_code': '12345',
'slugs[0]': 'assumenda',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"url": "https://google.com",
"slug": "ena-adamz-midmc",
"out_of_area": 1
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Check whether an organization is premium
requires authentication
Only premium organizations have access to the WordPress plugin.
Onboarding form
The client onboarding workflow helps dog owners get a free quote and sign up for service on their own.
Each account has its own unique and prebuilt client onboarding url which you may want to use as a reference. To obtain your url, please visit Employee portal > Settings > Client Onboarding > View in Browser then copy the url shown in the address bar. The form should look like this: https://client.sweepandgo.com/unique-slug/register
Get price, tax percent, cross sells, cross sells placement, custom price and more
requires authentication
If the zip code is within the account service area, you may obtain price based on account (organization) slug, number of dogs, zip code, cleanup frequency and the last time the yard was cleaned.
If the initial and one time cleanup prices do not depend on the number of dogs and when the yard was cleaned last time, the account may set custom prices.
The regular price can be displayed per cleanup or as fixed price per default billing interval. To choose how to display your pricing on your client onboarding form go to Employee Portal > Settings > Billing > Onboarding Price display section > Edit > select price display option > Save.
The account special offers and important disclaimers may be highlighted within the price display. To update them go to Settings > Client Onboarding > Callouts & Disclaimers.
If the account offers additional services such as odor eliminator or kitty litter exchange you may also display those prices on the client onboarding form. To add additional services, go to Employee Portal > Settings > Additional Services > Add New.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/price_registration_form?organization=ena-adamz-midmc&last_time_yard_was_thoroughly_cleaned=one_week&clean_up_frequency=two_times_a_week&number_of_dogs=2&zip_code=12345" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/price_registration_form"
);
const params = {
"organization": "ena-adamz-midmc",
"last_time_yard_was_thoroughly_cleaned": "one_week",
"clean_up_frequency": "two_times_a_week",
"number_of_dogs": "2",
"zip_code": "12345",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/price_registration_form';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'organization' => 'ena-adamz-midmc',
'last_time_yard_was_thoroughly_cleaned' => 'one_week',
'clean_up_frequency' => 'two_times_a_week',
'number_of_dogs' => '2',
'zip_code' => '12345',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/price_registration_form'
params = {
'organization': 'ena-adamz-midmc',
'last_time_yard_was_thoroughly_cleaned': 'one_week',
'clean_up_frequency': 'two_times_a_week',
'number_of_dogs': '2',
'zip_code': '12345',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"price": {
"value": "85.00",
"category": "prepaid",
"billing_interval": "monthly"
},
"tax_percent": "10.250",
"tax_percent_others": 1,
"pricing_zip_code_type": "regular",
"custom_price": {
"short_description": "title",
"long_description": "desc"
},
"show_price_options": {
"show_per_cleanup": 1,
"show_per_billing_interval": 1,
"default_billing_interval": "monthly"
},
"cross_sells": [
{
"id": 1,
"name": "Deodorizing",
"description": "Eliminate poop and urine smell!",
"unit": "Monthly Treatment (up to 1/4 acre)",
"unit_amount": "39.99",
"taxable": 1,
"service": 1,
"tax_percent": "0.000",
"count_clients": 28
},
{
"id": 2,
"name": "Kitty Litter Exchange",
"description": null,
"unit": "1",
"unit_amount": "20.00",
"taxable": 0,
"service": 0,
"tax_percent": "0.000",
"count_clients": 2
},
{
"id": 3,
"name": "Dog Walking",
"description": null,
"unit": "15",
"unit_amount": "30.00",
"taxable": 0,
"service": 1,
"tax_percent": "0.000",
"count_clients": 1
},
{
"id": 4,
"name": "Yard Size XL",
"description": "3/4 Acre Surcharge",
"unit": "Monthly",
"unit_amount": "30.00",
"taxable": 0,
"service": 1,
"tax_percent": "0.000",
"count_clients": 0
},
{
"id": 5,
"name": "Yard Size XXL",
"description": "1 Acre Surcharge",
"unit": "Monthly",
"unit_amount": "40.00",
"taxable": 0,
"service": 1,
"tax_percent": "0.000",
"count_clients": 0
},
{
"id": 6,
"name": "Front Yard",
"description": null,
"unit": "Weekly",
"unit_amount": "10.00",
"taxable": 0,
"service": 1,
"tax_percent": "0.000",
"count_clients": 1
},
{
"id": 7,
"name": "Front Yard",
"description": null,
"unit": "Monthly",
"unit_amount": "40.00",
"taxable": 0,
"service": 1,
"tax_percent": "0.000",
"count_clients": 0
}
],
"cross_sells_placement": "top"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get onboarding form filed, terms of use, callout and disclaimer and list of states
requires authentication
The length of the signup form and the fields to fill out depend on your signup form settings.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/service_registration_form?organization=ena-adamz-midmc" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/service_registration_form"
);
const params = {
"organization": "ena-adamz-midmc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/service_registration_form';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'organization' => 'ena-adamz-midmc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/service_registration_form'
params = {
'organization': 'ena-adamz-midmc',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"form_fields": [
{
"value": "",
"required": false,
"step": 2,
"frontend_name": "Coupon Code",
"frontend_type": "textfield",
"slug": "coupon_code",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "1,2,3,4,5",
"required": true,
"step": 2,
"frontend_name": "Number Of Dogs",
"frontend_type": "select_single",
"slug": "number_of_dogs",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "two_times_a_week,once_a_week,bi_weekly,once_a_month,one_time",
"required": true,
"step": 2,
"frontend_name": "Cleanup Frequency",
"frontend_type": "select_single",
"slug": "clean_up_frequency",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "one_week,two_weeks,three_weeks,one_month,two_months,3-4_months,5-6_months,7-9_months,10+_months",
"required": true,
"step": 2,
"frontend_name": "Last Time Yard Was Thoroughly Cleaned",
"frontend_type": "select_single",
"slug": "last_time_yard_was_thoroughly_cleaned",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "First Name",
"frontend_type": "textfield",
"slug": "first_name",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "Last Name",
"frontend_type": "textfield",
"slug": "last_name",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "Your Email Address",
"frontend_type": "textfield",
"slug": "your_email_address",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "Confirm Email Address",
"frontend_type": "textfield",
"slug": "confirm_email_address",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": false,
"step": 3,
"frontend_name": "Home Phone Number",
"frontend_type": "textfield",
"slug": "home_phone_number",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "Cell Phone Number",
"frontend_type": "textfield",
"slug": "cell_phone_number",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "Home Address",
"frontend_type": "textfield",
"slug": "home_address",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "City",
"frontend_type": "textfield",
"slug": "city",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "State",
"frontend_type": "state",
"slug": "state_province_region",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": false,
"step": 3,
"frontend_name": "Dogs Name",
"frontend_type": "textfield",
"slug": "dogs_name",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "yes,no",
"required": true,
"step": 3,
"frontend_name": "Is it safe for us to be in the yard with your dog?",
"frontend_type": "select_single",
"slug": "safe_dog",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": false,
"step": 3,
"frontend_name": "Breed",
"frontend_type": "textfield",
"slug": "dogs_breeds",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": false,
"frontend_description": ""
},
{
"value": "",
"required": false,
"step": 3,
"frontend_name": "Additional comment for dog",
"frontend_type": "textfield",
"slug": "comments_for_each_dog",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "left,right,alley,no_gate,other",
"required": true,
"step": 3,
"frontend_name": "Where is your gate located?",
"frontend_type": "select_single",
"slug": "gate_location",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": true,
"step": 3,
"frontend_name": "Gated community",
"frontend_type": "textfield",
"slug": "gated_community",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": "Please insert the code if any"
},
{
"value": "Back Yard,Flower Beds,Deck/Patio,Dog Run,Garden,Side Yard (Left),Side Yard (Right),Area with Mulch,Area with Rocks",
"required": true,
"step": 3,
"frontend_name": "Which areas should we clean?",
"frontend_type": "select_multiple",
"slug": "areas_to_clean",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "off_schedule,on_the_way,completed",
"required": true,
"step": 3,
"frontend_name": "Cleanup Notifications",
"frontend_type": "select_multiple",
"slug": "cleanup_notification_type",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": "What cleanup message would you like to receive?"
},
{
"value": "email,sms,call",
"required": false,
"step": 3,
"frontend_name": "Notification Type",
"frontend_type": "select_single",
"slug": "cleanup_notification_chanel",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": "How would you like to receive cleanup notifications?"
},
{
"value": "credit_card,check",
"required": true,
"step": 3,
"frontend_name": "Please select your payment method",
"frontend_type": "select_single",
"slug": "payment_method",
"organization_form_id": 289,
"one_time": false,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "search_engine,previous_client,referred_by_family_or_friend,directory_listing,social_media,vehicle_signage,radio_ad,local_event,gift_certificate,other",
"required": true,
"step": 3,
"frontend_name": "Please tell us how you heard about us",
"frontend_type": "select_single",
"slug": "how_heard_about_us",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
},
{
"value": "",
"required": false,
"step": 3,
"frontend_name": "Additional comments",
"frontend_type": "textfield",
"slug": "additional_comment",
"organization_form_id": 289,
"one_time": true,
"recurring": true,
"show": true,
"frontend_description": ""
}
],
"terms_of_use": {
"content": "<p>As the client, you are responsible for maintaining safe access into and out of the yard (if we are unable to clean due to access, you will be charged for that cleanup), immediate notification of any changes in the number of pets and prompt payment of balances due.</p><p><br></p><p>Inclement weather may make it hazardous or impossible to make a scheduled cleanup. In this event, we will be responsible for servicing your yard as soon as possible.</p><p><br></p><p>If for any reason your pet(s) will not be using the yard for a certain period (i.e. vacation, illness, etc.) and you do not wish to be charged for an unnecessary visit(s), please let us know in advance to pause the service. </p><p><br></p><p>We assume no liabilities for damages to yards, gates, pets or other properties.</p><p><br></p><p>Fees and Promotions are subject to change at any time. In this rare circumstance, you will be notified at least two (2) weeks prior to any changes.</p><p><br></p><p>Either party may terminate service (in writing) at any time. Unpaid balances are due within 15 days.</p><p><br></p><p>By initiating service, both parties agree to the above terms and responsibilities.</p>"
},
"callout_disclaimer": {
"callout": "Our Best Rate! You and Your pet will love our service.",
"disclaimer": "We do not offer refunds for missed cleanups due to holidays, snow days or thunderstorms - Displayed pricing is for an average backyard up to an 1/8 of an acre - A valid credit card on file is required for recurring service."
},
"states": [
{
"id": 1,
"name": "Alabama - AL"
},
{
"id": 2,
"name": "Alaska - AK"
},
{
"id": 3,
"name": "Arizona - AZ"
},
{
"id": 4,
"name": "Arkansas - AR"
},
{
"id": 5,
"name": "California - CA"
},
{
"id": 6,
"name": "Colorado - CO"
},
{
"id": 7,
"name": "Connecticut - CT"
},
{
"id": 8,
"name": "Delaware - DE"
},
{
"id": 9,
"name": "District of Columbia - DC"
},
{
"id": 10,
"name": "Florida - FL"
},
{
"id": 11,
"name": "Georgia - GA"
},
{
"id": 12,
"name": "Hawaii - HI"
},
{
"id": 13,
"name": "Idaho - ID"
},
{
"id": 14,
"name": "Illinois - IL"
},
{
"id": 15,
"name": "Indiana - IN"
},
{
"id": 16,
"name": "Iowa - IA"
},
{
"id": 17,
"name": "Kansas - KS"
},
{
"id": 18,
"name": "Kentucky - KY"
},
{
"id": 19,
"name": "Louisiana - LA"
},
{
"id": 20,
"name": "Maine - ME"
},
{
"id": 33,
"name": "Maryland - MD"
},
{
"id": 34,
"name": "Massachusetts - MA"
},
{
"id": 35,
"name": "Michigan - MI"
},
{
"id": 36,
"name": "Minnesota - MN"
},
{
"id": 37,
"name": "Mississippi - MS"
},
{
"id": 38,
"name": "Missouri - MO"
},
{
"id": 21,
"name": "Montana - MT"
},
{
"id": 22,
"name": "Nebraska - NE"
},
{
"id": 23,
"name": "Nevada - NV"
},
{
"id": 24,
"name": "New Hampshire - NH"
},
{
"id": 25,
"name": "New Jersey - NJ"
},
{
"id": 26,
"name": "New Mexico - NM"
},
{
"id": 27,
"name": "New York - NY"
},
{
"id": 28,
"name": "North Carolina - NC"
},
{
"id": 29,
"name": "North Dakota - ND"
},
{
"id": 30,
"name": "Ohio - OH"
},
{
"id": 31,
"name": "Oklahoma - OK"
},
{
"id": 32,
"name": "Oregon - OR"
},
{
"id": 39,
"name": "Pennsylvania - PA"
},
{
"id": 40,
"name": "Rhode Island - RI"
},
{
"id": 41,
"name": "South Carolina - SC"
},
{
"id": 42,
"name": "South Dakota - SD"
},
{
"id": 43,
"name": "Tennessee - TN"
},
{
"id": 44,
"name": "Texas - TX"
},
{
"id": 45,
"name": "Utah - UT"
},
{
"id": 46,
"name": "Vermont - VT"
},
{
"id": 47,
"name": "Virginia - VA"
},
{
"id": 48,
"name": "Washington - WA"
},
{
"id": 49,
"name": "West Virginia - WV"
},
{
"id": 50,
"name": "Wisconsin - WI"
},
{
"id": 51,
"name": "Wyoming - WY"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get organization branding info
requires authentication
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/organization_data?organization=magnificent-scoopers-777-p4ycx" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/organization_data"
);
const params = {
"organization": "magnificent-scoopers-777-p4ycx",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/organization_data';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'organization' => 'magnificent-scoopers-777-p4ycx',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/organization_data'
params = {
'organization': 'magnificent-scoopers-777-p4ycx',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"organization": {
"analytic_enabled": 1,
"branding_color": "#39A597",
"business_address": "1502 Morse St",
"business_city": "Houston",
"business_lat": "29.7521804",
"business_lng": "-95.4058215",
"business_name": "Magnificent Scoopers 777",
"business_phone": "2071459875",
"business_state": "Texas",
"business_website": "https://www.sweepandgo.com/",
"business_zip": "77019",
"can_call_company_phone_client_portal": "1",
"can_text_company_phone_client_portal": "1",
"card_connect_site": null,
"charges_enabled": 1,
"commercial_inventory_tracking": "0",
"ga_tracking_id": "null",
"logo": "",
"organization": "magnificent-scoopers-777-p4ycx",
"organization_can_have_onboarding": true,
"organization_id": 161,
"organization_name": "Magnificent Scoopers 777",
"organization_status": "active",
"pay_period": "monthly",
"payroll_filter": "years_in_service,revenue,revenue_adjustment,distance,overtime_hours,vacation_hours,tips,reimbursement,deduction,number_of_jobs,number_of_complaints,mileage_rate,base_percentage,fixed_rate",
"rating_tipping": "enabled_all",
"send_invoice_email": "1",
"show_company_address_client_portal": "1",
"show_company_email_client_portal": "1",
"show_company_phone_client_portal": "1",
"show_logo_onboarding": "1",
"show_name_onboarding": "0",
"show_on_list": "0",
"show_payroll_filed_tech": "1",
"show_rating_comment_fieldtech": "1",
"subscription_package": "Professional",
"website": "http://www.superskooopers.com"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get default onboarding coupon if exists
requires authentication
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find_default?organization=ena-adamz-midmc" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find_default"
);
const params = {
"organization": "ena-adamz-midmc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find_default';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'organization' => 'ena-adamz-midmc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find_default'
params = {
'organization': 'ena-adamz-midmc',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"coupon": {
"coupon_id": "50POFF",
"coupon_name": "Spring Season",
"percent_off": "20",
"amount_off": null,
"duration_in_months": 0,
"duration": "once"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Check coupon code valid
requires authentication
If the account runs any special promos, new clients may enter a coupon code. To create promos and coupon codes, go to Employee Portal > Billing > Coupons > New.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find?coupon_id=SPRING&organization=ena-adamz-midmc" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find"
);
const params = {
"coupon_id": "SPRING",
"organization": "ena-adamz-midmc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'coupon_id' => 'SPRING',
'organization' => 'ena-adamz-midmc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/coupon_find'
params = {
'coupon_id': 'SPRING',
'organization': 'ena-adamz-midmc',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"coupon": {
"percent_off": "25.00",
"amount_off": null,
"duration_in_months": 3,
"duration": "repeating",
"coupon_id": "SPRING",
"coupon_name": "Spring Sale NEW"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Check client email exists
requires authentication
Checks whether a client with the given email already exists as an active client within the organization.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_client_email_exists?email=john%40doe.com" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_client_email_exists"
);
const params = {
"email": "john@doe.com",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_client_email_exists';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'email' => 'john@doe.com',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_client_email_exists'
params = {
'email': 'john@doe.com',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"exists": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get thank you messages to show up on complete onboarding client
requires authentication
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/thank_you_pages?slug=ena-adamz-midmc" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/thank_you_pages"
);
const params = {
"slug": "ena-adamz-midmc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/thank_you_pages';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'slug' => 'ena-adamz-midmc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/thank_you_pages'
params = {
'slug': 'ena-adamz-midmc',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"thank_you_pages": [
{
"type": "credit_card_sign_up",
"content": "<p>Thank You For Signing Up</p><br><p>We have just sent you an email confirmation and login information to our client portal. We will also contact you to confirm your information and schedule a start date!</p><br>Payment Details:<ul><li>You have enrolled in our subscription payment option.</li><li>By far, the easiest way to pay for services</li><li>Your card will be charged after the completion the initial cleanup.</li><li>We will send you invoices according to your billing option and billing cycle and your card will be auto-debited according to NET terms on your account.</li></ul><br><p>If at any time, you have questions about your service or would like to change your card information or cancel monthly service, please contact us via client portal, email or phone.</p><br><p>Thank you.</p>"
},
{
"type": "check_payment_sign_up",
"content": "<p>Thank You for Signing Up</p><br><p>We have just sent you an email confirmation and login information to our client portal. We will also contact you to confirm your information and schedule a start date!</p><br>Payment Details:<ul><li>You have chosen to pay by check for your services.</li><li>Payment is required for the initial cleanup on completion. Your technician can collect a check at time of cleanup. If you will not be home, please leave a check for the larger amount of the Estimated Initial Cleanup (please see your confirmation email for estimate).</li><li>For regular services, we will email your recurring invoices according to your billing option and cycle, payment is due according to NET terms on your account.</li><li>If you would like to switch to auto pay, please just enter you credit card details within your client portal. </li></ul><br><p>If at any time, you have questions about your service, please contact us via email or phone.</p><br><p>Thank you.</p>"
},
{
"type": "one_time_clean_up",
"content": "<p>Thank you for Requesting a One Time Cleanup</p><br><p>We have just sent you an email confirmation and login information to our client portal. We will also contact you to confirm your information and schedule your cleanup.</p><br><p>Thank you.</p>"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get out of area form fields
requires authentication
If the zip code is not within your service area, your prospect will be asked to fill out a short form so you could research more. After the form is submitted, the account will receive an email with lead information.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form?organization=ena-adamz-midmc" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form"
);
const params = {
"organization": "ena-adamz-midmc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'organization' => 'ena-adamz-midmc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form'
params = {
'organization': 'ena-adamz-midmc',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"form_fields": [
{
"id": 4658,
"organization_form_id": 290,
"frontend_type": "textfield",
"frontend_description": "",
"backend_description": "",
"slug": "zip_code",
"step": 3,
"frontend_name": "Zip code",
"backend_name": "Zip code",
"one_time": true,
"recurring": true,
"show": true,
"required": true,
"optional_show": true,
"optional_required": false,
"backend_type": "textfield",
"value": "",
"options": "",
"locked": false,
"backend_sort": 27,
"frontend_sort": 27,
"locked_options": false,
"hint": ""
},
{
"id": 4659,
"organization_form_id": 290,
"frontend_type": "textfield",
"frontend_description": "",
"backend_description": "",
"slug": "name",
"step": 3,
"frontend_name": "Name",
"backend_name": "Name",
"one_time": true,
"recurring": true,
"show": true,
"required": true,
"optional_show": true,
"optional_required": false,
"backend_type": "textfield",
"value": "",
"options": "",
"locked": false,
"backend_sort": 28,
"frontend_sort": 28,
"locked_options": false,
"hint": ""
},
{
"id": 4660,
"organization_form_id": 290,
"frontend_type": "textfield",
"frontend_description": "",
"backend_description": "",
"slug": "email_address",
"step": 3,
"frontend_name": "Email address",
"backend_name": "Email address",
"one_time": true,
"recurring": true,
"show": true,
"required": true,
"optional_show": true,
"optional_required": false,
"backend_type": "textfield",
"value": "",
"options": "",
"locked": false,
"backend_sort": 29,
"frontend_sort": 29,
"locked_options": false,
"hint": ""
},
{
"id": 4662,
"organization_form_id": 290,
"frontend_type": "textfield",
"frontend_description": "",
"backend_description": "",
"slug": "phone",
"step": 3,
"frontend_name": "Phone number",
"backend_name": "Phone number",
"one_time": true,
"recurring": true,
"show": true,
"required": false,
"optional_show": true,
"optional_required": false,
"backend_type": "textfield",
"value": "",
"options": "",
"locked": false,
"backend_sort": 30,
"frontend_sort": 30,
"locked_options": false,
"hint": ""
},
{
"id": 4661,
"organization_form_id": 290,
"frontend_type": "textfield",
"frontend_description": "",
"backend_description": "",
"slug": "address",
"step": 3,
"frontend_name": "Address",
"backend_name": "Address",
"one_time": true,
"recurring": true,
"show": true,
"required": true,
"optional_show": true,
"optional_required": false,
"backend_type": "textfield",
"value": "",
"options": "",
"locked": false,
"backend_sort": 31,
"frontend_sort": 31,
"locked_options": false,
"hint": ""
},
{
"id": 4663,
"organization_form_id": 290,
"frontend_type": "textfield",
"frontend_description": "",
"backend_description": "",
"slug": "comment",
"step": 3,
"frontend_name": "Comment",
"backend_name": "Comment",
"one_time": true,
"recurring": true,
"show": true,
"required": false,
"optional_show": true,
"optional_required": false,
"backend_type": "textfield",
"value": "",
"options": "",
"locked": false,
"backend_sort": 32,
"frontend_sort": 32,
"locked_options": false,
"hint": ""
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Save out of service area lead
requires authentication
Sends an email for leads that are outside the service area.
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"organization\": \"ena-adamz-midmc\",
\"name\": \"Ena Doe\",
\"address\": \"1502 Morse St\",
\"email_address\": \"ena@doe.com\",
\"zip_code\": \"12345\",
\"comment\": \"Demo comment\",
\"phone\": \"8987876558\",
\"marketing_allowed\": 1,
\"marketing_allowed_source\": \"open_api\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"organization": "ena-adamz-midmc",
"name": "Ena Doe",
"address": "1502 Morse St",
"email_address": "ena@doe.com",
"zip_code": "12345",
"comment": "Demo comment",
"phone": "8987876558",
"marketing_allowed": 1,
"marketing_allowed_source": "open_api"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'organization' => 'ena-adamz-midmc',
'name' => 'Ena Doe',
'address' => '1502 Morse St',
'email_address' => 'ena@doe.com',
'zip_code' => '12345',
'comment' => 'Demo comment',
'phone' => '8987876558',
'marketing_allowed' => 1,
'marketing_allowed_source' => 'open_api',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/out_of_service_form'
payload = {
"organization": "ena-adamz-midmc",
"name": "Ena Doe",
"address": "1502 Morse St",
"email_address": "ena@doe.com",
"zip_code": "12345",
"comment": "Demo comment",
"phone": "8987876558",
"marketing_allowed": 1,
"marketing_allowed_source": "open_api"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Check zip code exists in your account
requires authentication
To get started you may want to validate that the client zip codes exists in your account or accounts.
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_zip_code_exists?organization=ena-adamz-midmc&value=12345" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"organization\": \"provident\",
\"value\": \"ad\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_zip_code_exists"
);
const params = {
"organization": "ena-adamz-midmc",
"value": "12345",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"organization": "provident",
"value": "ad"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_zip_code_exists';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'query' => [
'organization' => 'ena-adamz-midmc',
'value' => '12345',
],
'json' => [
'organization' => 'provident',
'value' => 'ad',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/check_zip_code_exists'
payload = {
"organization": "provident",
"value": "ad"
}
params = {
'organization': 'ena-adamz-midmc',
'value': '12345',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload, params=params)
response.json()Example response (200):
{
"exists": "not_exists"
}
Example response (200):
{
"exists": "exists"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create client with package subscription
requires authentication
Create client with selected package.
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/create_client_with_package" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"organization\": \"ena-adamz-midmc\",
\"email\": \"john@doe.com\",
\"first_name\": \"John\",
\"last_name\": \"Doe\",
\"home_phone_number\": \"8987876558\",
\"cell_phone_number\": \"8987876558\",
\"home_address\": \"1502 Morse St\",
\"city\": \"New York\",
\"state\": \"TX\",
\"zip_code\": \"12345\",
\"clean_up_frequency\": \"two_times_a_week\",
\"cross_sell_id\": \"2\",
\"category\": \"cleanup\",
\"billing_interval\": \"monthly\",
\"credit_card_token\": \"tok_5678967890678 or 678987678909876\",
\"name_on_card\": \"John Doe\",
\"postal\": \"28301\",
\"expiry\": \"0924\",
\"marketing_allowed\": 1,
\"marketing_allowed_source\": \"open_api\",
\"terms_open_api\": 1,
\"cross_sell_name\": \"Awesome package\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/client_on_boarding/create_client_with_package"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"organization": "ena-adamz-midmc",
"email": "john@doe.com",
"first_name": "John",
"last_name": "Doe",
"home_phone_number": "8987876558",
"cell_phone_number": "8987876558",
"home_address": "1502 Morse St",
"city": "New York",
"state": "TX",
"zip_code": "12345",
"clean_up_frequency": "two_times_a_week",
"cross_sell_id": "2",
"category": "cleanup",
"billing_interval": "monthly",
"credit_card_token": "tok_5678967890678 or 678987678909876",
"name_on_card": "John Doe",
"postal": "28301",
"expiry": "0924",
"marketing_allowed": 1,
"marketing_allowed_source": "open_api",
"terms_open_api": 1,
"cross_sell_name": "Awesome package"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/create_client_with_package';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'organization' => 'ena-adamz-midmc',
'email' => 'john@doe.com',
'first_name' => 'John',
'last_name' => 'Doe',
'home_phone_number' => '8987876558',
'cell_phone_number' => '8987876558',
'home_address' => '1502 Morse St',
'city' => 'New York',
'state' => 'TX',
'zip_code' => '12345',
'clean_up_frequency' => 'two_times_a_week',
'cross_sell_id' => '2',
'category' => 'cleanup',
'billing_interval' => 'monthly',
'credit_card_token' => 'tok_5678967890678 or 678987678909876',
'name_on_card' => 'John Doe',
'postal' => '28301',
'expiry' => '0924',
'marketing_allowed' => 1,
'marketing_allowed_source' => 'open_api',
'terms_open_api' => 1,
'cross_sell_name' => 'Awesome package',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/client_on_boarding/create_client_with_package'
payload = {
"organization": "ena-adamz-midmc",
"email": "john@doe.com",
"first_name": "John",
"last_name": "Doe",
"home_phone_number": "8987876558",
"cell_phone_number": "8987876558",
"home_address": "1502 Morse St",
"city": "New York",
"state": "TX",
"zip_code": "12345",
"clean_up_frequency": "two_times_a_week",
"cross_sell_id": "2",
"category": "cleanup",
"billing_interval": "monthly",
"credit_card_token": "tok_5678967890678 or 678987678909876",
"name_on_card": "John Doe",
"postal": "28301",
"expiry": "0924",
"marketing_allowed": 1,
"marketing_allowed_source": "open_api",
"terms_open_api": 1,
"cross_sell_name": "Awesome package"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
One time invoice charge using credit cards
Endpoints for processing one-time invoice payments.
Check invoice status
requires authentication
Returns the remaining invoice balance and the payment gateway (if applicable).
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/one_time_payment/check_invoice?invoice_number=3-3-190207-2-4" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/one_time_payment/check_invoice"
);
const params = {
"invoice_number": "3-3-190207-2-4",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/one_time_payment/check_invoice';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'invoice_number' => '3-3-190207-2-4',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/one_time_payment/check_invoice'
params = {
'invoice_number': '3-3-190207-2-4',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (200):
{
"invoice_remaining": "12.23",
"payment_gateway": "fts/stripe/none"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
One time payment using CardPointe
requires authentication
Charges the invoice using CardPointe (CardConnect) and marks it as paid when successful.
Example request:
curl --request PUT \
"https://openapi.sweepandgo.com/api/v2/one_time_payment/cc_payment" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"invoice_number\": \"3-3-190207-2-4\",
\"amount\": \"67.98\",
\"name_on_card\": \"John Doe\",
\"token\": \"9422925921134242\",
\"expiry\": \"1223\",
\"postal\": \"12345\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/one_time_payment/cc_payment"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"invoice_number": "3-3-190207-2-4",
"amount": "67.98",
"name_on_card": "John Doe",
"token": "9422925921134242",
"expiry": "1223",
"postal": "12345"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/one_time_payment/cc_payment';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'invoice_number' => '3-3-190207-2-4',
'amount' => '67.98',
'name_on_card' => 'John Doe',
'token' => '9422925921134242',
'expiry' => '1223',
'postal' => '12345',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/one_time_payment/cc_payment'
payload = {
"invoice_number": "3-3-190207-2-4",
"amount": "67.98",
"name_on_card": "John Doe",
"token": "9422925921134242",
"expiry": "1223",
"postal": "12345"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"status": "paid"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
One time payment using Stripe
requires authentication
Charges the invoice using Stripe and marks it as paid when successful.
Example request:
curl --request PUT \
"https://openapi.sweepandgo.com/api/v2/one_time_payment/stripe_payment" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"invoice_number\": \"3-3-190207-2-4\",
\"amount\": \"67.98\",
\"name_on_card\": \"John Doe\",
\"token\": \"tok_1E0rfhHLLICwofnx4bUzDZis\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/one_time_payment/stripe_payment"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"invoice_number": "3-3-190207-2-4",
"amount": "67.98",
"name_on_card": "John Doe",
"token": "tok_1E0rfhHLLICwofnx4bUzDZis"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/one_time_payment/stripe_payment';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'invoice_number' => '3-3-190207-2-4',
'amount' => '67.98',
'name_on_card' => 'John Doe',
'token' => 'tok_1E0rfhHLLICwofnx4bUzDZis',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/one_time_payment/stripe_payment'
payload = {
"invoice_number": "3-3-190207-2-4",
"amount": "67.98",
"name_on_card": "John Doe",
"token": "tok_1E0rfhHLLICwofnx4bUzDZis"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"status": "paid"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
One time check payments
Endpoints for one time check payments.
One time check payment
requires authentication
Records one time check payment for a residential client.
Example request:
curl --request PUT \
"https://openapi.sweepandgo.com/api/v1/invoice/one_time" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"invoice_number\": \"3-3-190207-2-4\",
\"reference_number\": \"ref_8798yhjasa\",
\"amount\": \"67.98\",
\"status\": \"successful\",
\"billing_address\": \"635 Go Man Go Dr\",
\"billing_city\": \"Stafford\",
\"billing_state\": \"Texas\",
\"billing_zip\": \"77477\",
\"name\": \"John Doe\",
\"email\": \"mail@mail.com\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v1/invoice/one_time"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"invoice_number": "3-3-190207-2-4",
"reference_number": "ref_8798yhjasa",
"amount": "67.98",
"status": "successful",
"billing_address": "635 Go Man Go Dr",
"billing_city": "Stafford",
"billing_state": "Texas",
"billing_zip": "77477",
"name": "John Doe",
"email": "mail@mail.com"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/invoice/one_time';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'invoice_number' => '3-3-190207-2-4',
'reference_number' => 'ref_8798yhjasa',
'amount' => '67.98',
'status' => 'successful',
'billing_address' => '635 Go Man Go Dr',
'billing_city' => 'Stafford',
'billing_state' => 'Texas',
'billing_zip' => '77477',
'name' => 'John Doe',
'email' => 'mail@mail.com',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/invoice/one_time'
payload = {
"invoice_number": "3-3-190207-2-4",
"reference_number": "ref_8798yhjasa",
"amount": "67.98",
"status": "successful",
"billing_address": "635 Go Man Go Dr",
"billing_city": "Stafford",
"billing_state": "Texas",
"billing_zip": "77477",
"name": "John Doe",
"email": "mail@mail.com"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reports
Endpoints for retrieving report counts and staff lists.
Count dogs for happy clients
requires authentication
Returns the total number of dogs across all happy clients.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/report/count_happy_dogs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/report/count_happy_dogs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/report/count_happy_dogs';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/report/count_happy_dogs'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"data": 23
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Count happy clients
requires authentication
Returns the total number of happy clients.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/report/count_happy_clients" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/report/count_happy_clients"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/report/count_happy_clients';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/report/count_happy_clients'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"data": 23
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Count active clients
requires authentication
Returns the total number of active clients.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/report/count_active_clients" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/report/count_active_clients"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/report/count_active_clients';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/report/count_active_clients'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"data": 23
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Count completed jobs
requires authentication
Returns the total number of completed jobs.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/report/jobs_count" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/report/jobs_count"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/report/jobs_count';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/report/jobs_count'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"data": 23
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List of active staff
requires authentication
Returns a list of active staff members for the organization.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/report/staff_select_list" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/report/staff_select_list"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/report/staff_select_list';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/report/staff_select_list'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"data": [
{
"id": 1,
"name": "John Doe",
"email": "john@doe.com",
"color": "#87332",
"phone": "789789888",
"status": "active"
},
{
"id": 2,
"name": "Jane Doe",
"email": "jane@doe.com",
"color": "#3355AA",
"phone": "789789777",
"status": "active"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Gift card certificates
Endpoints for managing gift card certificates.
Send new Gift card certificate
requires authentication
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/gift_card" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"purchaser_name\": \"John Doe\",
\"purchaser_email\": \"jon@doe.com\",
\"purchaser_phone\": \"6789876543\",
\"amount\": \"12.45\",
\"expires\": \"2024-12-23\",
\"bought\": \"2024-11-23\",
\"reference_number\": \"12c45-wa3B\",
\"recipient_name\": \"Jane Doe\",
\"recipient_email\": \"jane@doe.com\",
\"special_note\": \"For your birthday\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/gift_card"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"purchaser_name": "John Doe",
"purchaser_email": "jon@doe.com",
"purchaser_phone": "6789876543",
"amount": "12.45",
"expires": "2024-12-23",
"bought": "2024-11-23",
"reference_number": "12c45-wa3B",
"recipient_name": "Jane Doe",
"recipient_email": "jane@doe.com",
"special_note": "For your birthday"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/gift_card';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'purchaser_name' => 'John Doe',
'purchaser_email' => 'jon@doe.com',
'purchaser_phone' => '6789876543',
'amount' => '12.45',
'expires' => '2024-12-23',
'bought' => '2024-11-23',
'reference_number' => '12c45-wa3B',
'recipient_name' => 'Jane Doe',
'recipient_email' => 'jane@doe.com',
'special_note' => 'For your birthday',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/gift_card'
payload = {
"purchaser_name": "John Doe",
"purchaser_email": "jon@doe.com",
"purchaser_phone": "6789876543",
"amount": "12.45",
"expires": "2024-12-23",
"bought": "2024-11-23",
"reference_number": "12c45-wa3B",
"recipient_name": "Jane Doe",
"recipient_email": "jane@doe.com",
"special_note": "For your birthday"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Coupons
Endpoints for managing coupons for residential subscriptions.
Create coupon for residential subscriptions
requires authentication
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/coupon" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"coupon_id\": \"5pr1nG\",
\"name\": \"Spring Season\",
\"coupon_type\": \"amount\",
\"duration\": \"repeating\",
\"percent_off\": \"20\",
\"amount_off\": \"22.51\",
\"redeem_by\": \"2024-12-23\",
\"max_redemptions\": 5,
\"number_of_months\": 2
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/coupon"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"coupon_id": "5pr1nG",
"name": "Spring Season",
"coupon_type": "amount",
"duration": "repeating",
"percent_off": "20",
"amount_off": "22.51",
"redeem_by": "2024-12-23",
"max_redemptions": 5,
"number_of_months": 2
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/coupon';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'coupon_id' => '5pr1nG',
'name' => 'Spring Season',
'coupon_type' => 'amount',
'duration' => 'repeating',
'percent_off' => '20',
'amount_off' => '22.51',
'redeem_by' => '2024-12-23',
'max_redemptions' => 5,
'number_of_months' => 2,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/coupon'
payload = {
"coupon_id": "5pr1nG",
"name": "Spring Season",
"coupon_type": "amount",
"duration": "repeating",
"percent_off": "20",
"amount_off": "22.51",
"redeem_by": "2024-12-23",
"max_redemptions": 5,
"number_of_months": 2
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success",
"coupon": {
"coupon_id": "UKdJ5C0W",
"name": "UKdJ5C0W"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Free quotes
Endpoints for retrieving free quotes.
Get free quotes
requires authentication
Returns a list of free quotes.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/free_quotes" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/free_quotes"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/free_quotes';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/free_quotes'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"free_quotes": [
{
"coupon_code": "UKdJ5C0W",
"number_of_dogs": "4",
"clean_up_frequency": "five_times_a_week",
"last_time_yard_was_thoroughly_cleaned": "two_months",
"your_email_address": "client@example.com",
"cell_phone_number": "8987876558",
"marketing_allowed": 1,
"first_name": "Ena",
"last_name": "Doe",
"created_at": "2026-02-15 10:42:31"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Inbound SMS notifications
Dog secured confirmation request
requires authentication
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/text-inbound/on-the-way/check-dogs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"From\": \"12234567890\",
\"To\": \"12334567890\",
\"SmsMessageSid\": \"89iwieweow8e49038408902\",
\"Body\": \"ENT\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/text-inbound/on-the-way/check-dogs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"From": "12234567890",
"To": "12334567890",
"SmsMessageSid": "89iwieweow8e49038408902",
"Body": "ENT"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/text-inbound/on-the-way/check-dogs';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'From' => '12234567890',
'To' => '12334567890',
'SmsMessageSid' => '89iwieweow8e49038408902',
'Body' => 'ENT',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/text-inbound/on-the-way/check-dogs'
payload = {
"From": "12234567890",
"To": "12334567890",
"SmsMessageSid": "89iwieweow8e49038408902",
"Body": "ENT"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Twilio webhook
requires authentication
Notify field tech that a client has received notification.
Example request:
curl --request POST \
"https://openapi.sweepandgo.com/api/v2/text-twilio/on-the-way/webhook" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"status\": \"delivered\",
\"job_id\": \"123\",
\"client\": \"cus_9is0ia893\",
\"chanel\": \"sms\",
\"type\": \"on_the_way\",
\"staff_id\": 1,
\"local_message_id\": \"270444-10-1753266841837\",
\"message_id\": \"SM4a13b79c2b6a0e17bb77b6c0ce0d4a34\",
\"error_code\": 1
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v2/text-twilio/on-the-way/webhook"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"status": "delivered",
"job_id": "123",
"client": "cus_9is0ia893",
"chanel": "sms",
"type": "on_the_way",
"staff_id": 1,
"local_message_id": "270444-10-1753266841837",
"message_id": "SM4a13b79c2b6a0e17bb77b6c0ce0d4a34",
"error_code": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/text-twilio/on-the-way/webhook';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'status' => 'delivered',
'job_id' => '123',
'client' => 'cus_9is0ia893',
'chanel' => 'sms',
'type' => 'on_the_way',
'staff_id' => 1,
'local_message_id' => '270444-10-1753266841837',
'message_id' => 'SM4a13b79c2b6a0e17bb77b6c0ce0d4a34',
'error_code' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/text-twilio/on-the-way/webhook'
payload = {
"status": "delivered",
"job_id": "123",
"client": "cus_9is0ia893",
"chanel": "sms",
"type": "on_the_way",
"staff_id": 1,
"local_message_id": "270444-10-1753266841837",
"message_id": "SM4a13b79c2b6a0e17bb77b6c0ce0d4a34",
"error_code": 1
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Example response (200):
{
"success": "success"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Packaged cross-sells
Endpoints for retrieving packaged cross-sells.
Get packaged cross-sells
requires authentication
Returns a list of packaged cross-sells for a given organization.
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v2/packages_list" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v2/packages_list"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v2/packages_list';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v2/packages_list'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()Example response (200):
{
"cross_sells": [
{
"id": 201,
"name": "Starter Package",
"description": "Essential tools to get started with our service.",
"unit": "bundle",
"unit_amount": "20.00",
"taxable": 1,
"service": 0,
"tax_percent": "5.000",
"package": 1,
"package_order": 1,
"featured": 1,
"featured_label": "Most Popular",
"descriptions": "Includes basic deodorizer, gloves, and poop bags.",
"button_color": "#4CAF50",
"background_color": "#E8F5E9",
"featured_color": "#FFC107",
"cleanup_frequency": "weekly",
"count_clients": 110
},
{
"id": 202,
"name": "Premium Package",
"description": "Full service kit with advanced cleaning solutions.",
"unit": "box",
"unit_amount": "40.00",
"taxable": 1,
"service": 0,
"tax_percent": "5.000",
"package": 1,
"package_order": 2,
"featured": 0,
"featured_label": null,
"descriptions": "Includes premium scented sprays, large bags, and protective wear.",
"button_color": "#2196F3",
"background_color": "#E3F2FD",
"featured_color": null,
"cleanup_frequency": "bi-weekly",
"count_clients": 65
}
],
"cross_sells_placement": "top",
"billing_interval": "monthly",
"category": "cleanup"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Webhooks
Webhooks for organization. Here is the list of all webhooks for one organization. You may trigger it at any time to receive a list of all webhook types. Type list of webhooks:
- free:quote - Free quote
- lead:out_of_service_area - Lead - out of service area
- lead:in_service_area - Lead - in service area
- lead:delete - Lead - deleted
- client:changed_status - Client - changed status
- client:changed_info - Client - changed info
- client:changed_address - Client - changed address
- client:client_onboarding_recurring - Client - client onboarding recurring
- client:client_onboarding_onetime - Client - client onboarding onetime
- client:subscription_created - Client - subscription created
- client:subscription_canceled - Client - subscription canceled
- client:subscription_paused - Client - subscription paused
- client:subscription_unpaused - Client - subscription unpaused
- client:invoice_finalized - Client - invoice finalized
- client:client_payment_declined - Client payment was declined
- client:client_payment_accepted - Client payment was accepted
- notification:on_the_way_notification - Notification - on the way notification
- notification:off_schedule_notification - Notification - off schedule notification
- notification:completed_job_notification - Notification - completed job notification
- notification:skipped_job_notification - Notification - skipped job notification
- notification:client_not_assigned - Notification - client not assigned
- client:client_assigned - Client - client assigned
- client:subscription_cancel_requested - Client - subscription cancel requested
- client:notification_settings_changed - Client - notification settings changed
- client:additional_contact_changed - Client - additional contact changed
- client:reviews_automation - Client - reviews automation
- client:areas_to_clean_changed - Client - areas to clean changed
- staff:staff_clock_in - Staff - staff clock in
- staff:staff_forgot_to_clock_out - Staff - staff forgot to clock out
- staff:shift_break_started - Staff - shift break started
- staff:shift_break_info - Staff - shift break info
- organization:client_onboarding_form_changed - Business - client onboarding form changed
- organization:cross_sells_changed - Business - cross sells changed
- payroll:shift_info - Payroll - shift info, work time, start time, end time, mileages, duration, break duration
- payroll:tip_info - Payroll - tip linked to invoice with amount
- payroll:job_complete - Payroll - job completed with info start time, end time, job type and price
- dog:birthday - Send webhook on dog birthday 7 days in advance
- client:credit_card_link_created - Private credit card link created for add new credit card
List of all webhooks for one organization
requires authentication
Example request:
curl --request GET \
--get "https://openapi.sweepandgo.com/api/v1/webhooks/list?page=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://openapi.sweepandgo.com/api/v1/webhooks/list"
);
const params = {
"page": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/webhooks/list';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'page' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/webhooks/list'
params = {
'page': '2',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"errors": [
"API key is not valid"
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retry one webhook
requires authentication
Example request:
curl --request PUT \
"https://openapi.sweepandgo.com/api/v1/webhooks/retry" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"id\": \"e0e03073-a1a3-4f6e-82ff-81dab3772534\"
}"
const url = new URL(
"https://openapi.sweepandgo.com/api/v1/webhooks/retry"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id": "e0e03073-a1a3-4f6e-82ff-81dab3772534"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$url = 'https://openapi.sweepandgo.com/api/v1/webhooks/retry';
$response = $client->put(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
],
'json' => [
'id' => 'e0e03073-a1a3-4f6e-82ff-81dab3772534',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://openapi.sweepandgo.com/api/v1/webhooks/retry'
payload = {
"id": "e0e03073-a1a3-4f6e-82ff-81dab3772534"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()Example response (403):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"errors": [
"API key is not valid"
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.