Add a region to the user's saved markets
const url = 'https://app-api.landinsights.co/api/public/v1/markets/';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"region_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","status":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://app-api.landinsights.co/api/public/v1/markets/ \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "region_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "example" }'Saves a market (county or ZIP region) to the authenticated user’s market list. Look up the region_id from the Market Stats response (its id field).
Cost: free.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
UUID of the region to save. Obtain from the /markets-stats/{fips}/stats/ response (its id field) or another regions response.
Pipeline label, mirroring the in-app market board columns (e.g., ‘Backlog’, ‘Watching’, ‘Active’). Free-form string.
Example generated
{ "region_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "status": "example"}Responses
Section titled “ Responses ”object
Identifier for the saved market row.
Identity of the saved region (county / ZIP). Statistics are not included here — fetch them from the Market Stats endpoint.
object
Internal region identifier.
Region type — ‘county’ for full-county stats, ‘zip’ for a single ZIP.
county- Whole county.zip- Single ZIP code.
County name (when type=‘county’) or ZIP code (when type=‘zip’).
Two-letter US state code (e.g., ‘CA’).
Primary county name. For ZIP regions, the county the ZIP falls into.
5-digit county FIPS code.
Pipeline label, mirroring the in-app market board columns (e.g., ‘Backlog’, ‘Watching’, ‘Active’). Free-form string.
ISO-8601 timestamp.
ISO-8601 timestamp.
Example
{ "region": { "type": "county" }}Validation error.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Missing or invalid credentials.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}A Pro subscription or higher API tier is required.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Authenticated but not permitted.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Resource not found.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Rate limit exceeded.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Internal error.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}