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. A path a live post used to answer on (renamed,
or merged into another post) comes back as kind: redirect to its
current slug; a live page or post on that path always wins. 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 a redirect. A redirect comes back for a URL a live post used to have (it was renamed, or merged into another post), pointing at the post's current slug, and with posts=redirect for any post, pointing at its /blog/ URL