PerslyPersly API
API Reference

Domains

List available trusted domains and categories for domain filtering.

GET https://api.persly.ai/v1/domains

Returns the public domain catalog used by domain filtering in Chat Completions and Finder.

Use this endpoint to discover domain values for include_domains and exclude_domains.

include_domains and exclude_domains are mutually exclusive on Chat/Finder requests. If both are provided in one request, the API returns 422.

Query Parameters

ParameterTypeRequiredDefaultDescription
categorystringNoCase-insensitive category filter (for example guideline, policy)
qstringNoCase-insensitive substring search against normalized domain names
limitintegerNo200Maximum number of domains to return. Range: 1–1000.

Response Body

FieldTypeDescription
versionstringCatalog schema version
generated_atstringISO 8601 timestamp when the catalog was generated
total_domainsintegerNumber of domains returned after applying filters and limits
domainsarrayDomain catalog entries
domains[].domainstringNormalized domain (for example nih.gov)
domains[].categorystringDomain category. Returns "unknown" when no category metadata is available
domains[].document_countintegerNumber of indexed documents mapped to the domain
domains[].in_trust_listbooleanWhether the domain is included in Persly's trust domain list
categoriesarrayCategory-level summary for the returned domain set
categories[].categorystringCategory name
categories[].domain_countintegerNumber of domains in the category
categories[].document_countintegerTotal indexed documents for domains in the category

Examples

List Domains

curl "https://api.persly.ai/v1/domains?limit=5"
import requests

response = requests.get(
    "https://api.persly.ai/v1/domains",
    params={"limit": 5},
)
data = response.json()

for item in data["domains"]:
    print(f"{item['domain']} ({item['category']}) - {item['document_count']} docs")
const response = await fetch("https://api.persly.ai/v1/domains?limit=5");
const data = await response.json();

for (const item of data.domains) {
  console.log(`${item.domain} (${item.category}) - ${item.document_count} docs`);
}

Response

{
  "version": "1.0",
  "generated_at": "2026-02-26T00:00:00Z",
  "total_domains": 2,
  "domains": [
    {
      "domain": "nih.gov",
      "category": "guideline",
      "document_count": 123,
      "in_trust_list": true
    },
    {
      "domain": "who.int",
      "category": "unknown",
      "document_count": 0,
      "in_trust_list": true
    }
  ],
  "categories": [
    {
      "category": "guideline",
      "domain_count": 1,
      "document_count": 123
    },
    {
      "category": "unknown",
      "domain_count": 1,
      "document_count": 0
    }
  ]
}

Filter by Category and Domain Query

curl "https://api.persly.ai/v1/domains?category=guideline&q=.gov&limit=20"

Errors

StatusCodeCause
422Invalid query parameter (for example, limit > 1000)
503service_unavailableDomain catalog metadata source temporarily unavailable

On this page