Safe Check-N
API Reference

Safe Check-N Headless API

Overview

The Safe Check-N API provides real-time verification of short-term rental listings against Colombia's National Tourism Registry (RNT) database, alongside automated indoor surveillance disclosure screening.

Authentication & Subscription Access

All requests require a valid API Bearer Token. Access is provisioned via your Safe Check-N developer subscription plan.

Header Name:Authorization
Header Format:Bearer YOUR_API_SUBSCRIPTION_KEY
bash
curl https://verify-listing-797822275394.us-central1.run.app \
  -H "Authorization: Bearer YOUR_API_SUBSCRIPTION_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.airbnb.com/rooms/1658722752212441825"}'

JavaScript (Node.js / Fetch)

javascript
const response = await fetch("https://verify-listing-797822275394.us-central1.run.app", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_SUBSCRIPTION_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    url: "https://www.airbnb.com/rooms/1658722752212441825"
  })
});

const data = await response.json();
console.log(data.title, data.overall_state);

Python (Requests)

python
import requests

url = "https://verify-listing-797822275394.us-central1.run.app"
headers = {
    "Authorization": "Bearer YOUR_API_SUBSCRIPTION_KEY",
    "Content-Type": "application/json"
}
payload = {
    "url": "https://www.airbnb.com/rooms/1658722752212441825"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

API Key Notice: Keep your subscription key secure. Do not expose this token in client-side code without domain restrictions or proxy routing.

B2B API Licensing & Pricing Tiers

Feature / TierDeveloper APIBusiness APIEnterprise API
Annual Subscription$4,500 / year$15,000 / year$35,000 / year
Annual Verification VolumeUp to 500 checks / yrUp to 2,500 checks / yrUp to 15,000 checks / yr
Target AudienceTravel app developers, niche brokersRegional PMS, corporate travel networks, mid-market travel agenciesMajor OTAs, enterprise underwriters, travel risk platforms
CoverageNationwide (Colombia)Nationwide (Colombia) + Core English DOM ScanningGlobal Multi-Market Coverage (RNT + Universal DOM Scanner)
White-Labeling Rights—+$3,500 / yearIncluded
API Endpoint AccessHeadless JSON APIHeadless JSON API + WebhooksHeadless JSON API + Batch Endpoints
Support SLAStandard (24 Hours)Priority (12 Hours)VIP (2 Hours)
Safe Check-N

API Endpoint Specifications

POSThttps://verify-listing-797822275394.us-central1.run.app
Content-Type:application/json

Request Body Parameters

ParameterTypeRequiredDescription
urlstringYesFull URL of the Airbnb listing to evaluate and verify.

Example Request Payload

json
{
  "url": "https://www.airbnb.com/rooms/1658722752212441825"
}

Response Schema — Success Response (200 OK)

FieldTypeDescription
overall_statestringStatus indicator badge (🟢 Green (Safe), 🟡 Yellow (Caution), 🔴 Red (Danger)).
titlestringConcise verification outcome header matching Chrome extension UI.
descriptionstringLegal compliance status or permit violation details.
camera_screening_outcomestringINDOOR SURVEILLANCE FLAG or No indoor surveillance flagged.
camera_warning_detailsstring | nullGuidance when indoor surveillance terms are present on the listing.
rnt_codestring | nullExtracted 5–8 digit RNT permit registration code.
hasCameraFlagbooleantrue if indoor surveillance terms were detected.
registry_snapshotstring | nullOfficial registry snapshot date label, present when RNT is verified.
registry_dataobject | nullOfficial record details from the RNT registry database.

Example Response (200 OK)

json
{
  "overall_state": "🟡 Yellow (Caution)",
  "title": "RNT VERIFIED (#274765)",
  "description": "This rental is compliant with Colombian tourism laws and Airbnb policy.",
  "camera_screening_outcome": "INDOOR SURVEILLANCE FLAG",
  "camera_warning_details": "See the 'Privacy and safety' section under 'What this place offers' for details.",
  "rnt_code": "274765",
  "hasCameraFlag": true,
  "registry_snapshot": "Official Registry Snapshot: July 7, 2026",
  "registry_data": {
    "CODIGO_RNT": 274765,
    "ESTADO_RNT": "ACTIVO",
    "RAZON_SOCIAL_ESTABLECIMIENTO": "LIVING 4",
    "DEPARTAMENTO": "ANTIOQUIA",
    "MUNICIPIO": "MEDELLIN",
    "CODIGO_MUNICIPIO": 5001,
    "NIT": 901819822,
    "CATEGORIA": "ESTABLECIMIENTOS DE ALOJAMIENTO TURÍSTICO",
    "SUB_CATEGORIA": "HOTEL",
    "AÑO": 2026
  }
}

HTTP Status Codes & Error Outputs

Safe Check-N returns standard HTTP status codes. When an error occurs, the response body contains a JSON object with a machine-readable error code and a human-readable message.

Status CodeError CodeDescriptionExample Payload
400 Bad RequestBAD_REQUESTMissing or malformed parameters (e.g., missing url field).{ "error": "BAD_REQUEST", "message": "Payload must include an Airbnb listing url" }
401 UnauthorizedUNAUTHORIZEDMissing or invalid API subscription key in Authorization header.{ "error": "UNAUTHORIZED", "message": "Missing or invalid Bearer API token." }
404 Not FoundNOT_FOUNDTarget endpoint or resource was not found.{ "error": "NOT_FOUND", "message": "Endpoint does not exist." }
500 Internal ErrorINTERNAL_ERRORAn unexpected server-side execution failure occurred.{ "error": "INTERNAL_ERROR", "message": "An unexpected error occurred." }
503 UnavailableSERVICE_UNAVAILABLETemporary service outage, deployment in progress, or upstream timeout.{ "error": "SERVICE_UNAVAILABLE", "message": "Service is temporarily overloaded." }