Resolve Path
Resolve a top-level path segment — yourname.nashra.website/{path} —
to a published landing page or a post, in one call. Landing pages win
when both share a slug. Unlisted posts resolve too. This is the only
way to fetch a landing page; the older landing-pages/{page}
endpoint was removed. Rate limited to 60 requests per minute per IP.
curl -X GET "https://app.nashra.ai/api/v1/tenants/example_string/resolve/example_string?posts=redirect" \
-H "Content-Type: application/json"
import requests
import json
url = "https://app.nashra.ai/api/v1/tenants/example_string/resolve/example_string?posts=redirect"
headers = {
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://app.nashra.ai/api/v1/tenants/example_string/resolve/example_string?posts=redirect", {
method: "GET",
headers: {
"Content-Type": "application/json"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://app.nashra.ai/api/v1/tenants/example_string/resolve/example_string?posts=redirect", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://app.nashra.ai/api/v1/tenants/example_string/resolve/example_string?posts=redirect')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
response = http.request(request)
puts response.body
{
"data": {
"kind": "landing_page",
"page": {
"id": 123,
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"slug": "example_string",
"title": "example_string",
"purpose": "service",
"show_header": true,
"language": "en",
"is_rtl_active": true,
"schema_version": 42,
"publish_date": "2024-12-25",
"updated_at": "2024-12-25T10:00:00Z",
"subscribe_form_identifier": "example_string",
"tracking_head": "example_string",
"content_json": "null",
"og": {
"title": "example_string",
"site_name": "John Doe",
"description": "example_string",
"image": "example_string",
"type": "website",
"locale": "ar_SA"
}
}
},
"meta": {}
}
{
"error": "Not Found",
"message": "The requested resource was not found",
"code": 404
}
/tenants/{slug}/resolve/{path}Target server for requests. Edit to use your own host.
Tenant's subdomain slug, or its verified custom domain
The path segment to resolve. Slugs aren't limited to lowercase ASCII — an Arabic title can produce an Arabic slug.
Pass redirect if you serve posts under your own /blog/ prefix — a matching post then comes back as a 301 redirect target instead of the post body.
Request Preview
Response
Response will appear here after sending the request
Path Parameters
Tenant's subdomain slug, or its verified custom domain
The path segment to resolve. Slugs aren't limited to lowercase ASCII — an Arabic title can produce an Arabic slug.
Query Parameters
Pass redirect if you serve posts under your own /blog/ prefix — a matching post then comes back as a 301 redirect target instead of the post body.
redirectResponses
Shape depends on kind — a published landing page, a post, or (only with posts=redirect) a redirect to the post's /blog/ URL