Our Location Management API provides a simple way to programmatically create, update, and manage your Storepoint locator locations. Use it to sync your location data from existing systems, automate updates, or build custom integrations.
Get Started →This is a private management API intended for server-side integrations. Never expose your authentication token in frontend applications.
The Store Locator Management API provides programmatic access to manage your location data for custom location sync workflows and server-side integrations. This API enables you to:
All endpoints require authentication via a private API token in the Authorization header:
Authorization: Bearer YOUR_PRIVATE_API_TOKEN
You can obtain your private API token from the Developer area in your Storepoint Dashboard. This token grants full administrative access to manage your locator configuration and locations - keep it strictly secure and never expose it in frontend code, public repositories, or client-side applications.
You can rotate or revoke API tokens in the Developer area of your dashboard. This is recommended if a token has been compromised or accidentally exposed.
The base URL for all API endpoints is:
https://api.storepoint.co/admin/v1
Retrieves a paginated list of all active locations for the authenticated locator.
GET /locations
limit
optional
Number of results per page
page
optional
Page number
Default: 1{
"success": true,
"locations": [
{
"id": "loc_abc123",
"name": "Store Name",
"address": "123 Main St",
"coordinates": {
"lat": 12.345678,
"lng": -12.345678
},
"description": "Store description",
"tags": ["tag1", "tag2"],
"contact": {
"phone": "555-1234",
"email": "[email protected]",
"website": "https://example.com"
},
"hours": {
"monday": "9:00-17:00",
"tuesday": "9:00-17:00",
"wednesday": "9:00-17:00",
"thursday": "9:00-17:00",
"friday": "9:00-17:00",
"saturday": "10:00-15:00",
"sunday": "closed"
},
"custom_fields": {},
"image_url": "https://example.com/image.jpg"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 100,
"total_pages": 10,
"next": "/admin/v1/locations?page=2",
"previous": null
}
}
Retrieves detailed information for a specific location.
GET /locations/{id}
{
"success": true,
"location": {
"id": "loc_abc123",
"name": "Store Name",
"address": "123 Main St",
"coordinates": {
"lat": 12.345678,
"lng": -12.345678
},
"description": "Store description",
"tags": ["tag1", "tag2"],
"contact": {
"phone": "555-1234",
"email": "[email protected]",
"website": "https://example.com"
},
"hours": {
"monday": "9:00-17:00",
"tuesday": "9:00-17:00",
"wednesday": "9:00-17:00",
"thursday": "9:00-17:00",
"friday": "9:00-17:00",
"saturday": "10:00-15:00",
"sunday": "closed"
},
"custom_fields": {},
"image_url": "https://example.com/image.jpg"
}
}
Creates a new location with the provided details.
POST /locations
{
"name": "Store Name",
"address": "123 Main St",
"coordinates": {
"lat": 12.345678,
"lng": -12.345678
},
"description": "Store description",
"tags": ["tag1", "tag2"],
"contact": {
"phone": "555-1234",
"email": "[email protected]",
"website": "https://example.com"
},
"hours": {
"monday": "9:00-17:00",
"tuesday": "9:00-17:00",
"wednesday": "9:00-17:00",
"thursday": "9:00-17:00",
"friday": "9:00-17:00",
"saturday": "10:00-15:00",
"sunday": "closed"
},
"custom_fields": {
"cf812sj12": "Free parking",
"feu3hsw32": "yes",
"hs2372a42": "Available"
},
"image_url": "https://example.com/store-photo.jpg"
}
{
"success": true,
"location": {
"id": "loc_abc123",
"name": "Store Name",
"address": "123 Main St",
"coordinates": {
"lat": 12.345678,
"lng": -12.345678
},
"description": "Store description",
"tags": ["tag1", "tag2"],
"contact": {
"phone": "555-1234",
"email": "[email protected]",
"website": "https://example.com"
},
"hours": {
"monday": "9:00-17:00",
"tuesday": "9:00-17:00",
"wednesday": "9:00-17:00",
"thursday": "9:00-17:00",
"friday": "9:00-17:00",
"saturday": "10:00-15:00",
"sunday": "closed"
},
"custom_fields": {
"cf812sj12": "Free parking",
"feu3hsw32": "yes",
"hs2372a42": "Available"
},
"image_url": "https://example.com/store-photo.jpg"
}
}
Updates an existing location. All fields are optional - only provided fields will be updated.
POST /locations/{id}
{
"name": "Updated Store Name",
"address": "123 Main St",
"coordinates": {
"lat": 12.345678,
"lng": -12.345678
},
"description": "Updated description",
"tags": ["updated_tag"],
"contact": {
"phone": "555-5678",
"email": "[email protected]",
"website": "https://updated.com"
},
"hours": {
"monday": "9:00-18:00",
"tuesday": "9:00-18:00",
"wednesday": "9:00-18:00",
"thursday": "9:00-18:00",
"friday": "9:00-18:00",
"saturday": "10:00-16:00",
"sunday": "closed"
},
"custom_fields": {
"cf812sj12": "Updated parking info",
"feu3hsw32": "no",
"hs2372a42": "Not available"
},
"image_url": "https://example.com/updated-photo.jpg"
}
{
"success": true,
"location": {
"id": "loc_abc123",
"name": "Updated Store Name",
"address": "123 Main St",
"coordinates": {
"lat": 12.345678,
"lng": -12.345678
},
"description": "Updated store description",
"tags": ["updated_tag"],
"contact": {
"phone": "555-5678",
"email": "[email protected]",
"website": "https://updated-example.com"
},
"hours": {
"monday": "9:00-18:00",
"tuesday": "9:00-18:00",
"wednesday": "9:00-18:00",
"thursday": "9:00-18:00",
"friday": "9:00-18:00",
"saturday": "10:00-16:00",
"sunday": "closed"
},
"custom_fields": {
"cf812sj12": "Updated parking info",
"feu3hsw32": "no",
"hs2372a42": "Not available"
},
"image_url": "https://example.com/updated-store-photo.jpg"
}
}
Deletes a location.
POST /locations/{id}/delete
{
"success": true,
"message": "Location deleted successfully"
}
Retrieves the list of custom fields configured for the locator. Use the returned field IDs to identify or set custom fields when getting, creating, or updating locations.
GET /custom_fields
{
"success": true,
"custom_fields": [
{
"id": "cf812sj12", // Field ID - you may use this to set or update custom fields
"name": "Field Name",
"type": "text"
}
]
}
When creating or updating locations, use the field IDs as keys in the custom_fields object. For example:
"custom_fields": { "cf812sj12": "Free street parking", "feu3hsw32": "yes" }
All endpoints may return the following error responses:
{
"error": "error",
"message": "No locator found"
}
{
"error": "validation_error",
"message": "Invalid input data",
"details": {
"field_name": ["Error message"]
}
}
{
"error": "not_found",
"message": "Location not found"
}
{
"error": "error",
"message": "Error message"
}
loc_
followed by random lowercase alphanumeric characters