For an approved business's owners, managers and staff. Scope business:manage. Staff read their own day; owners and managers make changes, and changes that matter need confirm: true.
GET /v1/business/overview
Today, this week and what's next
Today's and this week's bookings and their value, what's waiting to be accepted or paid, the next visit, the vans and walkers (paused or not), upcoming time off, service areas and price changes set for later. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: business_overview
Example
curl -s "https://api.nogpets.com/v1/business/overview" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"today": {
"date": "…",
"label": "…",
"bookings": 0,
"value": {
"cents": 0,
"text": "…"
}
},
"thisWeek": {
"from": "…",
"to": "…",
"bookings": 0,
"value": {
"cents": 0,
"text": "…"
},
"waitingForYou": 0,
"unpaid": 0
},
"next": {
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
},
"resources": [
{
"id": "…",
"name": "…",
"kind": "…",
"categories": [
"…"
],
"paused": true,
"pausedReason": "…"
}
],
"timeOff": [
{
"id": "…",
"who": "…",
"from": "…",
"to": "…",
"reason": "…"
}
],
"areas": [
{
"id": "…",
"name": "…",
"status": "…"
}
],
"scheduledPriceChanges": [
{
"id": "…",
"from": "…",
"summary": "…"
}
],
"money": "…",
"note": "…"
} GET /v1/business/bookings
Bookings over a date range
The business's bookings between two dates (default the next 7 days), by van or walker and status. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: list_business_bookings
Example
curl -s "https://api.nogpets.com/v1/business/bookings" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"from": "…",
"to": "…",
"count": 0,
"bookings": [
{
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
]
} POST /v1/business/bookings
A phone or walk-in booking, made by the business
The business books a client itself (a phone call, a walk-in, a message): an existing client (clientId, their pets by petKey and address by addressKey from get_client) or a new one (name, phone and consentNote), the services, a time and the van or walker. It's placed where the van or walker is free (working hours don't bind the business's own bookings), ACCEPTED, cash due on the day or a Payfast pay link for the client. Without confirm: 409 CONFIRM_REQUIRED with the summary. South African businesses only (else NOT_AVAILABLE_IN_COUNTRY). Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: create_booking_for_client
Example
curl -s -X POST "https://api.nogpets.com/v1/business/bookings" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"category":"…","pets":[{}],"start":"2026-09-29T07:00:00.000Z","resourceId":"…"}' Response shape · 201
{
"bookingId": "…",
"status": "…",
"when": "…",
"start": "…",
"resourceId": "…",
"paymentMethod": "…",
"total": "…",
"totalCents": 0,
"summary": "…",
"payUrl": "…",
"clientId": "…",
"repeatOf": "…",
"next": "…"
} GET /v1/business/day-plan
One day's visits in order, per van or walker
For one day (default today, the business's time zone): each van, walker or sitter's hours, time off and visits in order with times, address, pets, services, notes, payment due, the gap before each visit and the straight-line distance from the last one. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: get_day_plan
Example
curl -s "https://api.nogpets.com/v1/business/day-plan" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"date": "…",
"label": "…",
"note": "…",
"plan": [
{
"resourceId": "…",
"name": "…",
"kind": "…",
"paused": true,
"hours": [
"…"
],
"timeOff": [
{}
],
"stops": [
{}
],
"directionsUrls": [
"…"
],
"summary": "…"
}
]
} GET /v1/business/next-booking
The visit happening now and the next one
The visit under way (if any) and the next one, with pets, address notes and minutes until it starts. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: next_booking
Example
curl -s "https://api.nogpets.com/v1/business/next-booking" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"now": {
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
} GET /v1/business/services
Services, prices by size and coat, packages
The business's services per line with prices (and each tier's tierIndex for update_prices), durations, packages, and price changes set for later. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: list_business_services
Example
curl -s "https://api.nogpets.com/v1/business/services" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"currency": "…",
"cardFee": "…",
"lines": [
{
"id": "…",
"label": "…",
"services": [
{}
],
"packages": [
{}
]
}
],
"scheduledPriceChanges": [
{
"id": "…",
"from": "…",
"summary": "…"
}
]
} POST /v1/business/times
Open times across the business's vans and walkers
Open times inside working hours for a visit of the business: from the pets and services (priced and timed by the business's own menu), a past booking to repeat, or a duration. South African businesses only (else NOT_AVAILABLE_IN_COUNTRY). Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: find_business_times
Example
curl -s -X POST "https://api.nogpets.com/v1/business/times" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"category": "…",
"durationMin": 0,
"price": "…",
"priceCents": 0,
"days": [
{
"date": "…",
"label": "…",
"slots": [
{}
]
}
],
"note": "…"
} GET /v1/business/clients
Search the business's own clients
The business's own clients (anyone it has booked, or added) matching a name, a pet's name, a phone number or an email. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: find_client
Example
curl -s "https://api.nogpets.com/v1/business/clients" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"count": 0,
"clients": [
{
"id": "…",
"name": "…",
"phone": "…",
"email": "…",
"hasAccount": true,
"visits": 0,
"lastVisit": "…",
"nextVisit": "…",
"pets": [
{}
],
"addresses": [
{}
],
"notes": [
{}
],
"consent": {},
"spent": "…"
}
],
"next": "…"
} GET /v1/business/clients/{clientId}
A client: pets, addresses, notes, bookings
One client of the business: contact, pets (petKey, usual services), addresses (addressKey), the business's notes, how they agreed to be booked, upcoming and past bookings. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: get_client
Example
curl -s "https://api.nogpets.com/v1/business/clients/<clientId>" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"client": {
"id": "…",
"name": "…",
"phone": "…",
"email": "…",
"hasAccount": true,
"visits": 0,
"lastVisit": "…",
"nextVisit": "…",
"pets": [
{
"key": "…",
"name": "…",
"type": "…",
"weightKg": 0,
"coat": "…",
"usual": "…",
"serviceIds": []
}
],
"addresses": [
{
"key": "…",
"label": "…",
"line1": "…",
"suburb": "…",
"postalCode": "…",
"notes": "…"
}
],
"notes": [
{
"text": "…",
"at": "…",
"by": "…"
}
],
"consent": {
"note": "…",
"at": "…"
},
"spent": "…"
},
"upcoming": [
{
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
],
"past": [
{
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
]
} POST /v1/business/clients/{clientId}/notes
A private note on a client
Adds a note to one of the business's clients (only this business sees it). Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: add_client_note
Example
curl -s -X POST "https://api.nogpets.com/v1/business/clients/<clientId>/notes" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"…"}' Response shape · 201
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"clientId": "…",
"name": "…",
"notes": [
{
"text": "…",
"at": "…"
}
],
"next": "…"
} GET /v1/business/earnings
Gross, fees, net and by service over a period
Earnings from visits in a period (default this week): gross, NogPets' card fee and Payfast's fee, net, received and still due, refunds, and by service, in the business's currency. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: earnings_summary
Example
curl -s "https://api.nogpets.com/v1/business/earnings" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"from": "…",
"to": "…",
"currency": "…",
"bookings": 0,
"gross": {
"cents": 0,
"text": "…"
},
"fees": {
"total": {
"cents": 0,
"text": "…"
},
"nogpetsCardFee": {
"cents": 0,
"text": "…"
},
"payfast": {
"cents": 0,
"text": "…"
}
},
"net": {
"cents": 0,
"text": "…"
},
"received": {
"cents": 0,
"text": "…"
},
"stillDue": {
"cents": 0,
"text": "…"
},
"refunds": {
"count": 0,
"amount": {
"cents": 0,
"text": "…"
}
},
"byService": [
{
"serviceId": "…",
"name": "…",
"count": 0,
"cents": 0,
"amount": "…"
}
],
"notes": [
"…"
]
} GET /v1/business/payouts
How card money reaches the business
Card payments for the business's bookings in a period (default this month), who they were paid to, and payouts for jobs NogPets passed to it. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: list_payouts
Example
curl -s "https://api.nogpets.com/v1/business/payouts" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"from": "…",
"to": "…",
"settlement": "…",
"cardPayments": [
{
"bookingId": "…",
"invoiceId": "…",
"at": "…",
"gross": "…",
"payfastFee": "…",
"status": "…",
"paidTo": "…"
}
],
"jobPayouts": [
{
"bookingId": "…",
"when": "…",
"amount": "…",
"method": "…",
"status": "…",
"paidAt": "…",
"ref": "…"
}
]
} GET /v1/business/unpaid
Who hasn't paid
Bookings in a period (default this week) not paid yet: card bookings not paid or failed, and cash not marked received; and invoice links still open (openInvoices). Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: list_unpaid_bookings
Example
curl -s "https://api.nogpets.com/v1/business/unpaid" \
-H "Authorization: Bearer $TOKEN"
Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"from": "…",
"to": "…",
"count": 0,
"total": "…",
"bookings": [],
"openInvoices": [
{
"invoiceId": "…",
"description": "…",
"clientName": "…",
"total": "…",
"paymentStatus": "…",
"expiresAt": "…"
}
],
"next": "…"
} POST /v1/business/prices
Change service prices, now or from a date
Changes prices (and optionally durations) per service or per size/coat tier, by amount or percent, now or from effectiveFrom. Without confirm: 409 CONFIRM_REQUIRED with the summary and a before → after preview. Bookings already made keep their price. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: update_prices
Example
curl -s -X POST "https://api.nogpets.com/v1/business/prices" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"changes":[{"serviceId":"full-groom","tierIndex":2,"priceCents":65000}],"effectiveFrom":"2026-10-01"}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"scheduled": true,
"priceChangeId": "…",
"effectiveFrom": "…",
"changes": [
{
"serviceId": "…",
"name": "…",
"tierIndex": 0,
"tier": "…",
"from": "…",
"to": "…",
"fromCents": 0,
"toCents": 0,
"durationMin": {
"from": 0,
"to": 0
}
}
],
"summary": "…",
"next": "…"
} POST /v1/business/hours
The weekly hours of the business or some vans and walkers
Sets the working week (local time) for every van, walker and sitter, or those in resourceIds. Bookings outside the new hours stay booked and are listed. Needs confirm after the summary. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: set_business_hours
Example
curl -s -X POST "https://api.nogpets.com/v1/business/hours" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"week":{}}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"resourceIds": [
"…"
],
"week": {},
"summary": "…",
"stillBooked": [
{
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
],
"next": "…"
} POST /v1/business/time-off
Days off or blocked hours
Blocks a whole day, several days or some hours on one day, for one van, walker or sitter or the whole business: no new bookings then. Bookings already in that time are never cancelled; they're listed, and the block needs confirm when there are any. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: add_time_off
Example
curl -s -X POST "https://api.nogpets.com/v1/business/time-off" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"date":"2026-10-02","from":"12:00","to":"17:00","resourceId":"van-1","reason":"Van service"}' Response shape · 201
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"timeOffId": "…",
"who": "…",
"from": "…",
"to": "…",
"summary": "…",
"stillBooked": [
{
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
],
"next": "…"
} POST /v1/business/time-off/{timeOffId}/remove
Opens blocked time again
Removes one block of time off (timeOffId from business_overview or add_time_off). Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: remove_time_off
Example
curl -s -X POST "https://api.nogpets.com/v1/business/time-off/<timeOffId>/remove" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"removed": "…",
"from": "…",
"to": "…",
"next": "…"
} POST /v1/business/area
Add or drop service areas
Adds areas (suburbs with postal codes, postal codes, or a radius around a place), which NogPets reviews before they take bookings, and/or drops areas (removeAreaIds, at once; bookings already made stay). Needs confirm after the summary. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: update_service_area
Example
curl -s -X POST "https://api.nogpets.com/v1/business/area" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"added": [
{
"id": "…",
"name": "…",
"status": "…"
}
],
"removed": [
"…"
],
"overlaps": [
{}
],
"summary": "…",
"next": "…"
} POST /v1/business/resources/{resourceId}/pause
Stop new bookings for a van, walker or sitter
A van, walker or sitter stops taking new bookings until resumed. Its bookings stay and are listed. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: pause_resource
Example
curl -s -X POST "https://api.nogpets.com/v1/business/resources/<resourceId>/pause" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"resourceId": "…",
"name": "…",
"paused": true,
"stillBooked": [
{
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
],
"next": "…"
} POST /v1/business/resources/{resourceId}/resume
Take bookings again
A paused van, walker or sitter takes bookings again. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: resume_resource
Example
curl -s -X POST "https://api.nogpets.com/v1/business/resources/<resourceId>/resume" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"resourceId": "…",
"name": "…",
"paused": true,
"stillBooked": [
{
"id": "…",
"when": "…",
"start": "2026-09-29T07:00:00.000Z",
"end": "2026-09-29T07:00:00.000Z",
"status": "PENDING",
"category": "…",
"resourceId": "…",
"resource": "…",
"client": {
"id": "…",
"name": "…",
"phone": "…"
},
"what": "…",
"address": "…",
"mapUrl": "…",
"notes": "…",
"paymentMethod": "…",
"paymentStatus": "PENDING",
"total": "…",
"totalCents": 0,
"unpaid": true,
"source": "…"
}
],
"next": "…"
} POST /v1/business/bookings/{bookingId}/repeat
Rebook a client's visit at a new time
Books the same client, pets, services and address as a past booking at a new time, at today's prices. Without confirm: 409 CONFIRM_REQUIRED with the summary. South African businesses only. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: book_repeat
Example
curl -s -X POST "https://api.nogpets.com/v1/business/bookings/<bookingId>/repeat" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"start":"2026-09-29T07:00:00.000Z"}' Response shape · 201
{
"bookingId": "…",
"status": "…",
"when": "…",
"start": "…",
"resourceId": "…",
"paymentMethod": "…",
"total": "…",
"totalCents": 0,
"summary": "…",
"payUrl": "…",
"clientId": "…",
"repeatOf": "…",
"next": "…"
} POST /v1/business/bookings/{bookingId}/payment-link
The client's Payfast link, sent again
For an unpaid card booking: the client's Payfast pay link (48 hours), sent to them on WhatsApp when they use NogPets on WhatsApp, and returned for the business to forward. Nothing is charged. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: send_payment_link
Example
curl -s -X POST "https://api.nogpets.com/v1/business/bookings/<bookingId>/payment-link" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"bookingId": "…",
"total": "…",
"totalCents": 0,
"payUrl": "…",
"expiresAt": "…",
"sent": {
"whatsapp": "…"
},
"next": "…"
} POST /v1/business/invoices
An invoice link with a QR code, to take a Payfast payment
A Payfast payment link and a QR code for any amount the business wants paid (a walk-in, a nail clip at the door, something sold on the day), not tied to a booking. The client pays on Payfast themselves (card, Instant EFT, SnapScan, Zapper); NogPets' card fee is added on top as on a card booking. With a Payfast split the amount goes to the business's own Payfast account, else NogPets pays it over. South African businesses only (409 PAYFAST_ZA_ONLY). Without confirm: 409 CONFIRM_REQUIRED with the summary. Needs business:manage; owners and managers (bizId only if they run more than one).
Scope: business:manage MCP tool: create_invoice_link
Example
curl -s -X POST "https://api.nogpets.com/v1/business/invoices" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"amountCents":500,"description":"…"}' Response shape · 201
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"invoiceId": "…",
"description": "…",
"amount": "…",
"amountCents": 0,
"cardFee": "…",
"total": "…",
"totalCents": 0,
"clientName": "…",
"payUrl": "…",
"qrUrl": "…",
"expiresAt": "…",
"summary": "…",
"next": "…"
} POST /v1/business/bookings/{bookingId}/reschedule
The business moves one of its bookings
Moves a pending or accepted booking of the business to a new time (any time the van or walker is free), same price and payment; it becomes ACCEPTED and the client is told as the app tells them. Without confirm: 409 CONFIRM_REQUIRED. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: reschedule_business_booking
Example
curl -s -X POST "https://api.nogpets.com/v1/business/bookings/<bookingId>/reschedule" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"start":"2026-09-29T07:00:00.000Z"}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"bookingId": "…",
"from": "…",
"start": "…",
"when": "…",
"resourceId": "…",
"status": "…",
"paymentStatus": "…",
"summary": "…",
"next": "…"
} POST /v1/business/bookings/{bookingId}/cancel
The business cancels one of its bookings
Cancels a pending or accepted booking (series: true for the rest of its repeats). A paid one goes to the refund list. The client is told as the app tells them. Without confirm: 409 CONFIRM_REQUIRED. Needs business:manage; the signed-in person must be an owner, manager or staff member of an approved NogPets business (bizId only if they run more than one).
Scope: business:manage MCP tool: cancel_business_booking
Example
curl -s -X POST "https://api.nogpets.com/v1/business/bookings/<bookingId>/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}' Response shape · 200
{
"business": {
"bizId": "…",
"name": "…",
"role": "…",
"country": "…",
"countryName": "…",
"currency": "…",
"timezone": "…",
"canTakeBookings": true
},
"cancelled": [
"…"
],
"refundsRequested": [
"…"
],
"summary": "…",
"next": "…"
}