Get Public City Detail
GET
/api/v1/public/cities/{slug}
const url = 'https://indepai.app/api/v1/public/cities/lisbon-portugal';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://indepai.app/api/v1/public/cities/lisbon-portugalGet public-safe city detail by slug. Includes basic cost of living, quality of life, and a static FI estimate. No authentication required.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”slug
required
City slug identifier
string
Example
lisbon-portugalResponses
Section titled “Responses”City detail
Media typeapplication/json
object
success
required
boolean
data
required
object
slug
required
string
name
required
string
country
required
string
region
string
nomadScore
number
monthlyCost
number
qualityOfLife
object
key
additional properties
number
fiEstimate
object
years
required
number
monthlyBudget
required
number
imageUrl
string format: uri
Example
{ "success": true}Missing slug parameter
Media typeapplication/json
object
success
required
Always false for error responses
boolean
error
required
Error type
string
code
Machine-readable error code
string
details
Detailed validation errors
Array<object>
object
path
required
Path to the invalid field
string
message
required
Error message
string
Example
{ "success": false, "error": "Validation error", "code": "VALIDATION_ERROR", "details": [ { "path": "currentAge", "message": "Must be between 18 and 100" } ]}City not found
Media typeapplication/json
object
success
required
Always false for error responses
boolean
error
required
Error type
string
code
Machine-readable error code
string
details
Detailed validation errors
Array<object>
object
path
required
Path to the invalid field
string
message
required
Error message
string
Example
{ "success": false, "error": "Validation error", "code": "VALIDATION_ERROR", "details": [ { "path": "currentAge", "message": "Must be between 18 and 100" } ]}