List Services
curl --request GET \
--url https://api.example.com/wp-json/latepoint-api/v1/servicesimport requests
url = "https://api.example.com/wp-json/latepoint-api/v1/services"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/wp-json/latepoint-api/v1/services', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/wp-json/latepoint-api/v1/services",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/wp-json/latepoint-api/v1/services"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/wp-json/latepoint-api/v1/services")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/wp-json/latepoint-api/v1/services")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyServices
List Services
Retrieve a list of all services with advanced filtering, pagination, and sorting options.
GET
/
wp-json
/
latepoint-api
/
v1
/
services
List Services
curl --request GET \
--url https://api.example.com/wp-json/latepoint-api/v1/servicesimport requests
url = "https://api.example.com/wp-json/latepoint-api/v1/services"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/wp-json/latepoint-api/v1/services', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/wp-json/latepoint-api/v1/services",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/wp-json/latepoint-api/v1/services"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/wp-json/latepoint-api/v1/services")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/wp-json/latepoint-api/v1/services")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyQuery Parameters
string
Search services by name, short description, or description
string
Filter by exact service name
string
Filter by service status (active, disabled)
integer
Filter by service category ID
integer
Filter services by location ID (shows only services available at this location)
integer
Filter services by agent ID (shows only services provided by this agent)
string
Filter by visibility (visible, hidden)
number
Minimum price filter
number
Maximum price filter
integer
Minimum duration in minutes
integer
Maximum duration in minutes
string
Filter services created after this date (YYYY-MM-DD format)
string
Filter services created before this date (YYYY-MM-DD format)
string
Filter services updated after this date (YYYY-MM-DD format)
string
Filter services updated before this date (YYYY-MM-DD format)
integer
default:"10"
Number of services per page (1-100)
integer
default:"1"
Page number for pagination
string
default:"id"
Field to order by (id, name, price, duration, created_date, updated_date)
string
default:"ASC"
Sort direction (ASC, DESC)
string
Include related data (comma-separated: category, agents, locations)
Example Requests
Basic Request
GET /wp-json/latepoint-api/v1/services
X-API-Key: YOUR_API_KEY
Search Services
GET /wp-json/latepoint-api/v1/services?search=test&per_page=2
X-API-Key: YOUR_API_KEY
Filter with Multiple Parameters
GET /wp-json/latepoint-api/v1/services?status=active&per_page=3&include=category,agents
X-API-Key: YOUR_API_KEY
Price Range Filter
GET /wp-json/latepoint-api/v1/services?price_min=50&price_max=200&order_by=charge_amount&order=ASC
X-API-Key: YOUR_API_KEY
Duration and Date Filters
GET /wp-json/latepoint-api/v1/services?duration_min=30&duration_max=120&created_after=2024-01-01
X-API-Key: YOUR_API_KEY
Filter by Location
GET /wp-json/latepoint-api/v1/services?location_id=2
X-API-Key: YOUR_API_KEY
Filter by Agent
GET /wp-json/latepoint-api/v1/services?agent_id=1
X-API-Key: YOUR_API_KEY
Combined Location and Agent Filter
GET /wp-json/latepoint-api/v1/services?location_id=2&agent_id=1&status=active
X-API-Key: YOUR_API_KEY
Response Example
Basic Response
{
"success": true,
"data": [
{
"id": "2",
"name": "General Consultation",
"short_description": "Standard medical consultation",
"description": null,
"duration": "60",
"price_min": "23.0000",
"price_max": "23.0000",
"charge_amount": "23.0000",
"deposit_amount": "0.0000",
"capacity_min": "1",
"capacity_max": "1",
"order_number": "2",
"selection_image_id": "0",
"status": "active",
"visibility": "visible",
"category_id": "0",
"customer_limit": "visible",
"created_at": "2025-08-18 07:58:53",
"updated_at": "2025-08-18 07:58:53"
}
],
"pagination": {
"page": 1,
"per_page": 10,
"total": 4,
"total_pages": 1,
"has_next_page": false,
"has_previous_page": false
}
}
With include=category,agents
{
"success": true,
"data": [
{
"id": "2",
"name": "General Consultation",
"charge_amount": "23.0000",
"status": "active",
"category": {
"id": 1,
"name": "Category Name",
"short_description": "Category description"
},
"agents": [
{
"id": "1",
"first_name": "Pao",
"last_name": "Campo",
"display_name": "Agente Pao"
}
]
}
],
"pagination": {
"page": 1,
"per_page": 10,
"total": 4,
"total_pages": 1,
"has_next_page": false,
"has_previous_page": false
}
}
The
customer_limit field is always present in the response. Use include=category to embed category data and include=agents for agent data per service. Use include=categories to append all service categories to the root of the response.