MENU navbar-image

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"
    }
}
 

Request      

GET api/token_generate/access_tokens

Query Parameters

organization_id   integer   

Organization ID. Example: 2

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
}
 

Request      

POST api/token_generate/access_token

Headers

Content-Type      

Example: application/json

Body Parameters

organization_id   integer   

Organization ID the token belongs to. Example: 2

webhooks_url   string   

Webhook endpoint that will receive event payloads. Example: https://example.com/webhooks

enabled_events   string[]   

List of enabled webhook events.

0   string  optional  

Example: client:client_onboarding_recurring

1   string  optional  

Example: client:client_onboarding_onetime

description   string  optional  

Human-readable description of the token purpose. Example: Webhooks for client onboarding events

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
}
 

Request      

GET api/token_generate/access_token/{id}

URL Parameters

id   integer   

The ID of the access token. Example: 12

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"
}
 

Request      

GET api/token_generate/access_token/{id}/delete

URL Parameters

id   integer   

The ID of the access token. Example: 12

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"
}
 

Request      

GET api/health

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"
    }
}
 

Request      

GET api/v1/welcome

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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"
    }
}
 

Request      

GET api/v2/welcome

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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
    }
}
 

Request      

GET api/v1/clients/active

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

Get results for specific page. Example: 2

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
    }
}
 

Request      

GET api/v1/clients/active_no_subscription

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

Get results for specific page. Example: 2

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
    }
}
 

Request      

GET api/v1/clients/inactive

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

Get results for specific page. Example: 2

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"
        }
    ]
}
 

Request      

POST api/v2/clients/client_details

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

client   string   

Unique client string in your organization. Example: rcl_MTPQPRUUUY7G

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"
}
 

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"
}
 

Request      

PUT api/v1/residential/onboarding

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

zip_code   string   

Zip code. Must be a 5-digit number. Example: 12110

number_of_dogs   integer   

Number of dogs. Example: 2

last_time_yard_was_thoroughly_cleaned   string   

When the yard was last thoroughly cleaned. Available options are: one_week, two_weeks, three_weeks, one_month, two_months, 3-4_months, 5-6_months, 7-9_months, 10+_months. Example: one_week

clean_up_frequency   string   

Cleanup frequency. Available options are: seven_times_a_week,six_times_a_week,five_times_a_week,four_times_a_week,three_times_a_week,two_times_a_week,once_a_week,bi_weekly,twice_per_month,every_three_weeks,every_four_weeks,once_a_month,one_time. Example: once_a_week

first_name   string   

Client first name. Example: John

last_name   string   

Client last name. Example: Doe

email   email   

Client email. Example: mail@email.com

city   string   

Client city. Example: Latham

home_address   string   

Client street address. Example: 1494 Ben Street

state   string   

Client state (two-letter abbreviation). Example: TX

home_phone_number   string  optional  

Client home phone number. Example: 7897666790

cell_phone_number   string  optional  

Client cell phone number. Example: 9897633690

initial_cleanup_required   integer   

Whether the client requested an initial cleanup. Available options: 0 (no), 1 (yes). Example: 1

cleanup_notification_type   string  optional  

Cleanup notification types. Available options: off_schedule, on_the_way and completed. Example: on_the_way, completed

cleanup_notification_channel   string  optional  

Method used to notify your client. Available options: sms, email or call. Example: sms

how_heard_about_us   string  optional  

How the client heard about you. Available options: search_engine, previous_client, referred_by_family_or_friend, flier_from_business, directory_listing, social_media, vehicle_signage, radio_ad, local_event, gift_certificate, other. Example: social_media

how_heard_answer   string  optional  

Details for "how_heard_about_us". Example: Facebook

additional_comment   string  optional  

Additional client comment. Example: Please clean my yard.

credit_card_token   string  optional  

Card token from CardConnect or Stripe (credit card on file). Example: tok_5678967890678 or 678987678909876

name_on_card   string  optional  

Name on card. Example: John Doe

postal   string  optional  

Billing postal code (required for CardConnect tokens). Example: 28301

expiry   string  optional  

Expiration (required for CardConnect tokens). Example: 0924

dog_name   string[]  optional  

List of dog names (index-aligned with other dog_* arrays).

0   string  optional  

First dog name. Example: Max

1   string  optional  

Second dog name. Example: Oskar

safe_dog   string[]  optional  

Whether each dog is safe for the technician (index-aligned).

0   string  optional  

Safety for the first dog. Example: yes

1   string  optional  

Safety for the second dog. Example: no

dog_breed   string[]  optional  

List of dog breeds (index-aligned).

0   string  optional  

First dog breed. Example: Poodle

1   string  optional  

Second dog breed. Example: Bulldog

dog_comment   string[]  optional  

Notes/comments for each dog (index-aligned).

0   string  optional  

Comment for the first dog. Example: Nice and kind

1   string  optional  

Comment for the second dog. Example: Can be reactive

marketing_allowed   integer   

Client consent for promotional/marketing messages. Available options: 0 (not allowed), 1 (allowed). Example: 1

marketing_allowed_source   string  optional  

Source of the consent value (e.g. open_api, client_portal, employee_portal, wordpress). Defaults to open_api when not provided. Example: open_api

areas_to_clean   string  optional  

Areas to clean (comma-separated). Example: Front Yard, Back Yard

gated_community   string  optional  

Gated community. Example: 67890

gate_location   string  optional  

Gate location description. Example: left

gate_code   string  optional  

Gate code. Example: 1234

tracking_field   string  optional  

UTM tracking code. Example: utm_campaign=blog_post&utm_medium=social&utm_source=facebook

cross_sells   integer[]  optional  

List of cross-sell IDs selected by the client.

0   integer  optional  

First cross-sell ID. Example: 1

1   integer  optional  

Second cross-sell ID. Example: 2

2   integer  optional  

Third cross-sell ID. Example: 5

terms_open_api   integer  optional  

If you have TOS in your onboarding form. Available options: 0 (no), 1 (yes). Example: 1

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
    }
}
 

Request      

GET api/v1/leads/list

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

Get results for specific page. Example: 2

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
    }
}
 

Request      

GET api/v1/leads/out_of_service

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

Get results for specific page. Example: 2

Dispatch Board

Endpoints for retrieving list of jobs.

Dispatch Board

requires authentication

Returns the Dispatch Board job list for the selected date.

Notes:

Supported job status values:

Supported job types:

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"
        }
    ]
}
 

Request      

GET api/v1/dispatch_board/jobs_for_date

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

date   string   

Date to load the Dispatch Board for. Format must be YYYY-MM-DD. Example: 2022-03-28

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
}
 

Request      

GET api/v2/check_token

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

token   string   

API access token - full string. Example: vUcSxeEgTgg0I65bPEgKBqU0AjBRz8cy61843egzKkI3hAcYJ9ErNYe2MTEoIEWo

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
}
 

Request      

GET api/v2/check_zip_code_multi_organizations

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

zip_code   string   

Client ZIP code. Must be a 5-digit number. Example: 12345

slugs   string[]   

List of organization slugs to check.

Check whether an organization is premium

requires authentication

Only premium organizations have access to the WordPress plugin.

Example request:
curl --request GET \
    --get "https://openapi.sweepandgo.com/api/v2/check_premium_organization?slug=ena-adamz-midmc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}"
const url = new URL(
    "https://openapi.sweepandgo.com/api/v2/check_premium_organization"
);

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/check_premium_organization';
$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/check_premium_organization'
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):


{
    "valid": true,
    "name": "Ena adamz"
}
 

Request      

GET api/v2/check_premium_organization

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

slug   string   

Organization slug. Example: ena-adamz-midmc

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"
}
 

Request      

GET api/v2/client_on_boarding/price_registration_form

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

organization   string   

Slug of your organization. Example: ena-adamz-midmc

last_time_yard_was_thoroughly_cleaned   string   

When the yard was last thoroughly cleaned. Example: one_week

clean_up_frequency   string   

Clean up frequency for the yard. Example: two_times_a_week

number_of_dogs   string   

Number of dogs. Example: 2

zip_code   string   

Zip code. Must be a 5-digit number. Example: 12345

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"
        }
    ]
}
 

Request      

GET api/v2/client_on_boarding/service_registration_form

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

organization   string   

Slug of your organization. Example: ena-adamz-midmc

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"
    }
}
 

Request      

GET api/v2/client_on_boarding/organization_data

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

organization   string   

Slug of organization. Example: magnificent-scoopers-777-p4ycx

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"
    }
}
 

Request      

GET api/v2/client_on_boarding/coupon_find_default

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

organization   string   

Slug of your organization. Example: ena-adamz-midmc

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"
    }
}
 

Request      

GET api/v2/client_on_boarding/coupon_find

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

coupon_id   string   

Coupon code. Example: SPRING

organization   string   

Slug of your organization. Example: ena-adamz-midmc

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
}
 

Request      

GET api/v2/client_on_boarding/check_client_email_exists

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

email   string   

Client email address. Example: john@doe.com

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>"
        }
    ]
}
 

Request      

GET api/v2/client_on_boarding/thank_you_pages

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

slug   string   

Slug of your organization. Example: ena-adamz-midmc

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": ""
        }
    ]
}
 

Request      

GET api/v2/client_on_boarding/out_of_service_form

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

organization   string   

Slug of your organization. Example: ena-adamz-midmc

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"
}
 

Request      

POST api/v2/client_on_boarding/out_of_service_form

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

organization   string   

Your organization slug. Example: ena-adamz-midmc

name   string   

Client name. Example: Ena Doe

address   string   

Client address. Example: 1502 Morse St

email_address   string   

Client email. Example: ena@doe.com

zip_code   string   

Client zip code. Must be a 5-digit number. Example: 12345

comment   string  optional  

Client comment. Example: Demo comment

phone   string  optional  

Client phone number. Example: 8987876558

location_id   string  optional  
marketing_allowed   integer   

Client consent for promotional/marketing messages. Available options: 0 (not allowed), 1 (allowed). Example: 1

marketing_allowed_source   string  optional  

Source of the consent value (e.g. open_api, client_portal, employee_portal, wordpress). Defaults to open_api when not provided. Example: open_api

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"
}
 

Request      

POST api/v2/client_on_boarding/check_zip_code_exists

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Query Parameters

organization   string   

Slug of your organization. Example: ena-adamz-midmc

value   string   

User entered zip code. Example: 12345

Body Parameters

organization   string   

Example: provident

value   string   

Example: ad

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"
}
 

Request      

POST api/v2/client_on_boarding/create_client_with_package

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

organization   string   

Your organization slug. Example: ena-adamz-midmc

email   email   

Client email. Example: john@doe.com

first_name   string   

Client first name. Example: John

last_name   string   

Client last name. Example: Doe

home_phone_number   string  optional  

Client home phone. Example: 8987876558

cell_phone_number   string  optional  

Client cell phone. Example: 8987876558

home_address   string   

Client address. Example: 1502 Morse St

city   string   

Client city. Example: New York

state   string   

Client state code. Example: TX

zip_code   string   

Client zip code. Must be a 5-digit number. Example: 12345

clean_up_frequency   string   

Client cleanup frequency. Example: two_times_a_week

cross_sell_id   string   

Selected package id. Example: 2

category   string  optional  

Organization billing option. Example: cleanup

billing_interval   string  optional  

Organization billing interval. Example: monthly

credit_card_token   string  optional  

Token from Card connect or Stripe for Credit card on file. Example: tok_5678967890678 or 678987678909876

name_on_card   string  optional  

Name on Card. Example: John Doe

postal   string  optional  

Postal for Card connect credit card on file. Example: 28301

expiry   string  optional  

Expiry for Card connect credit card on file. Example: 0924

marketing_allowed   integer   

Client consent for promotional/marketing messages. Available options: 0 (not allowed), 1 (allowed). Example: 1

marketing_allowed_source   string  optional  

Source of the consent value (e.g. open_api, client_portal, employee_portal, wordpress). Defaults to open_api when not provided. Example: open_api

terms_open_api   integer  optional  

If you have TOS in your onboarding form. Available options: 0 (no), 1 (yes). Example: 1

cross_sell_name   string  optional  

Selected package name. Example: Awesome package

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"
}
 

Request      

GET api/v2/one_time_payment/check_invoice

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

invoice_number   string   

Invoice number. Example: 3-3-190207-2-4

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"
}
 

Request      

PUT api/v2/one_time_payment/cc_payment

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

invoice_number   string   

Invoice number. Example: 3-3-190207-2-4

amount   string   

Amount. Example: 67.98

name_on_card   string   

Client name. Example: John Doe

token   string   

Card token. Example: 9422925921134242

expiry   string   

Card expiry (MMYY). Example: 1223

postal   string   

Card owner postal code. Example: 12345

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"
}
 

Request      

PUT api/v2/one_time_payment/stripe_payment

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

invoice_number   string   

Invoice number. Example: 3-3-190207-2-4

amount   string   

Amount. Example: 67.98

name_on_card   string   

Client name. Example: John Doe

token   string   

Card token. Example: tok_1E0rfhHLLICwofnx4bUzDZis

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"
}
 

Request      

PUT api/v1/invoice/one_time

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

invoice_number   string   

Invoice number. Example: 3-3-190207-2-4

reference_number   string   

Reference number. Example: ref_8798yhjasa

amount   string   

Payment amount. Example: 67.98

status   string   

Payment status. Available options: successful, failed. Example: successful

billing_address   string  optional  

Billing address. Example: 635 Go Man Go Dr

billing_city   string  optional  

Billing city. Example: Stafford

billing_state   string  optional  

Billing state. Example: Texas

billing_zip   string  optional  

Billing zip. Example: 77477

name   string  optional  

Client name. Example: John Doe

email   string  optional  

Client email. Example: mail@mail.com

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
}
 

Request      

GET api/v2/report/count_happy_dogs

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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
}
 

Request      

GET api/v2/report/count_happy_clients

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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
}
 

Request      

GET api/v2/report/count_active_clients

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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
}
 

Request      

GET api/v2/report/jobs_count

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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"
        }
    ]
}
 

Request      

GET api/v2/report/staff_select_list

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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"
}
 

Request      

POST api/v2/gift_card

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

purchaser_name   string   

Purchaser name. Example: John Doe

purchaser_email   string   

Purchaser email. Example: jon@doe.com

purchaser_phone   string  optional  

Purchaser phone. Example: 6789876543

amount   decimal   

Gift certificate amount. Example: 12.45

expires   string  optional  

Gift certificate expiration date (in format: Y-m-d). Example: 2024-12-23

bought   string   

Purchase date of the gift certificate (in format: Y-m-d). Example: 2024-11-23

reference_number   string   

Unique reference number. Example: 12c45-wa3B

recipient_name   string   

Recipient name. Example: Jane Doe

recipient_email   string  optional  

Recipient email. Example: jane@doe.com

special_note   string  optional  

Special note. Example: For your birthday

name_on_card   string  optional  

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"
    }
}
 

Request      

POST api/v2/coupon

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

coupon_id   string  optional  

Coupon code. Example: 5pr1nG

name   string  optional  

Coupon name. Example: Spring Season

coupon_type   string   

Coupon type. Available options: percent, amount. Example: amount

duration   string   

Coupon duration Available options: once, forever or repeating. Example: repeating

percent_off   string  optional  

Percent discount. Required if coupon_type is percent. Example: 20

amount_off   string  optional  

Amount discount. Required if coupon_type is amount. Example: 22.51

redeem_by   string  optional  

Date when coupon expires (in format: Y-m-d). Example: 2024-12-23

max_redemptions   integer  optional  

How many subscriptions can use this coupon. Example: 5

number_of_months   integer  optional  

How many months will be applied if the coupon's duration is repeating. Example: 2

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"
        }
    ]
}
 

Request      

GET api/v2/free_quotes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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"
}
 

Request      

POST api/v2/text-inbound/on-the-way/check-dogs

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

From   string   

SMS sender number. Example: 12234567890

To   string   

SMS recipient number. Example: 12334567890

SmsMessageSid   string   

Message id. Example: 89iwieweow8e49038408902

Body   string   

If staff can enter or not. Available options: ENT (Enter), DNE (Do Not Enter). Example: ENT

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"
}
 

Request      

POST api/v2/text-twilio/on-the-way/webhook

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

status   string   

Message delivery status. Example: delivered

job_id   string   

Job number. Example: 123

client   string   

Client unique id. Example: cus_9is0ia893

chanel   string   

Channel through which the client received the message. Example: sms

type   string   

Message type. Example: on_the_way

staff_id   integer   

ID of the staff member who sent the message. Example: 1

local_message_id   string  optional  

Unique string for each message from field tech portal. Example: 270444-10-1753266841837

message_id   string  optional  

Unique string for each message from Twilio. Example: SM4a13b79c2b6a0e17bb77b6c0ce0d4a34

error_code   integer  optional  

Error code from Twilio. Example: 1

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"
}
 

Request      

GET api/v2/packages_list

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

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:

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"
    ]
}
 

Request      

GET api/v1/webhooks/list

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Query Parameters

page   integer  optional  

Get results for specific page. Example: 2

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"
    ]
}
 

Request      

PUT api/v1/webhooks/retry

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Body Parameters

id   string   

Retry specific webhook. Example: e0e03073-a1a3-4f6e-82ff-81dab3772534