/api/v1/destinations | /blogs | /reviews
Website content feeds for destination pages, SEO blogs, and approved reviews.
Query params
| Field | Type | Notes |
|---|---|---|
| limit | number | For list endpoints |
| offset | number | For list endpoints |
| tourId | string | Optional on /reviews |
Response schema
| Field | Type | Notes |
|---|---|---|
| data.destinations[] | array | Destination records |
| data.blogs[] | array | Published blog records |
| data.reviews[] | array | Approved review records |
Endpoint errors
| Field | Type | Notes |
|---|---|---|
| 401 | Error | Invalid or revoked API key |
| 500 | Error | Failed to fetch content |
curl example
curl "https://relay.forgelabspro.com/api/v1/destinations?limit=12" -H "X-API-Key: rf_live_your_api_key"
curl "https://relay.forgelabspro.com/api/v1/blogs?limit=5" -H "X-API-Key: rf_live_your_api_key"
curl "https://relay.forgelabspro.com/api/v1/reviews?tourId=tour_1&limit=10" -H "X-API-Key: rf_live_your_api_key"JavaScript example
const headers = { "X-API-Key": "rf_live_your_api_key" };
const [destinations, blogs, reviews] = await Promise.all([
fetch("https://relay.forgelabspro.com/api/v1/destinations?limit=12", { headers }).then(r => r.json()),
fetch("https://relay.forgelabspro.com/api/v1/blogs?limit=5", { headers }).then(r => r.json()),
fetch("https://relay.forgelabspro.com/api/v1/reviews?limit=10", { headers }).then(r => r.json()),
]);Sample response
{
"ok": true,
"data": {
"destinations": [{ "slug": "masai-mara" }],
"blogs": [{ "slug": "best-time" }],
"reviews": [{ "rating": 5 }]
}
}