SnapR API
v1Use the SnapR API and webhooks to connect AI real estate photo enhancement to your existing tools and workflows.
Authentication
All API requests require a Bearer token in the Authorization header. Create API keys in your Dashboard Settings.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://snap-r.com/api/v1/listingsAPI keys start with sk_live_. Keep them secret — never expose in client-side code.
Endpoints
Listings
GET
/api/v1/listingsList all listings. Supports ?page=1&per_page=50POST
/api/v1/listingsCreate a new listingGET
/api/v1/listings/:idGet listing details with photosPATCH
/api/v1/listings/:idUpdate listing fieldsDELETE
/api/v1/listings/:idDelete a listingPhotos
GET
/api/v1/listings/:id/photosList photos for a listingPOST
/api/v1/photos/:id/enhanceApply AI enhancement to a photoPreparation & Marketing
POST
/api/v1/listings/:id/prepareTrigger AI preparation pipelineGET
/api/v1/listings/:id/statusGet preparation + marketing statusVideo
POST
/api/v1/video/generateTrigger video render (returns render_id)GET
/api/v1/video/:renderIdGet video render status + output URLLeads
GET
/api/v1/leadsList leads. Supports ?listing_id=&page=&per_page=POST
/api/v1/leadsCreate a new leadWebhooks
GET
/api/v1/webhooksList outgoing webhooksPOST
/api/v1/webhooksCreate a webhook endpointPATCH
/api/v1/webhooksUpdate webhook configDELETE
/api/v1/webhooksDelete a webhookResponse Format
Success (single item):
{ "data": { "id": "...", "title": "..." } }Success (list):
{ "data": [...], "meta": { "page": 1, "per_page": 50, "total": 123 } }Error:
{ "error": { "message": "...", "code": "validation_error" } }Rate Limits
Default: 60 requests/minute per API key.
Rate limit headers are included in every response:
X-RateLimit-Limit— Maximum requests per windowX-RateLimit-Remaining— Remaining requestsRetry-After— Seconds to wait (on 429)
Webhook Events
Subscribe to real-time events via outgoing webhooks:
listing.createdlisting.updatedlisting.preparedlead.createdlead.updatedpost.publishedpost.scheduledphoto.enhancedPayloads are signed with HMAC-SHA256 via the X-Webhook-Signature header.
Code Examples
JavaScript / Node.js
const response = await fetch('https://snap-r.com/api/v1/listings', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const { data, meta } = await response.json();
console.log(`Found ${meta.total} listings`);Python
import requests
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get("https://snap-r.com/api/v1/listings", headers=headers)
data = response.json()
print(f"Found {data['meta']['total']} listings")