Integrating with the OwnerRez API can return errors when a request does not meet authentication, access, validation, or processing requirements. This article documents those errors, what triggers them, and the changes needed to resolve them. The sections below are grouped by error type, beginning with authentication and access errors that are evaluated before the requested operation runs.
OwnerRez API v2 error responses include a stable code field and a doc_url link to this article. Use code in your integration to branch error handling instead of parsing human-readable messages.
Every error response uses Content-Type: application/json with these fields:
messages — human-readable detail (one or more strings)
code — stable machine-readable identifier (snake_case)
doc_url — link to the section below for that code
status — HTTP status as snake_case text (for example, unauthorized)
status_code — numeric HTTP status (for example, 401)
Authentication and access errors
Returned when a request fails authentication, authorization, or account access checks before the requested API operation runs.
https_required
HTTP 400. The request was not made over HTTPS. Retry using https://.
user_agent_required
HTTP 401. OAuth Bearer requests must include a User-Agent header that identifies your application.
auth_required
HTTP 401. No credentials were provided. Send a valid Personal Access Token (Basic) or OAuth access token (Bearer). See
API authentication.
invalid_token
HTTP 401. The token is missing, expired, inactive, or otherwise invalid. Legacy X-OwnerRez-App / X-OwnerRez-User headers are no longer accepted.
invalid_request
HTTP 401. Basic authentication credentials are not valid Base64 or do not contain username:token format.
ip_blocked
HTTP 403. The request came from an IP address that is not allowed for this Personal Access Token.
Open the token under Settings > API and review the IP restriction mode:
- Allow All — block only the IPs listed below (default).
- Deny All — allow only the IPs listed below.
If the token uses Deny All and your server’s outbound IP is not on the list, every API call returns this error. Add the IP addresses your integration uses (comma, semicolon, or one per line), or switch to Allow All if IP restriction is not needed.
account_locked
account_closed
HTTP 403. The OwnerRez account is closed and can no longer use the API.
wordpress_plugin_required
HTTP 403. The request used the WordPress plugin User-Agent prefix but the account does not have the WordPress plugin feature enabled.
messaging_not_enabled
HTTP 402. The Messages endpoints need an OAuth app; Personal Access Tokens cannot call them. Using your own account? Create an
OAuth app and click
Grant Access To Me on the Users tab — self-use is included. Third-party apps need a signed messaging agreement: email
partnerhelp@ownerrez.com with the subject
Messaging API Access.
external_sites_not_enabled
HTTP 402. The Reviews and Listings endpoints need the WordPress Plugin + Integrated Websites premium, or an OAuth app with listing access (a partnership agreement — email
partnerhelp@ownerrez.com with the subject
Listing Endpoints Access). Using your own account? Create an
OAuth app and click
Grant Access To Me on the Users tab — self-use is included, no premium needed.
Request and application errors
Returned while processing an authenticated request, when the input or operation cannot be completed.
validation_failed
HTTP 400. Request data failed validation. Read messages for field-level detail.
not_found
HTTP 404. The requested resource does not exist or is not visible to the authenticated account.
permission_denied
HTTP 403. The authenticated user or app is not allowed to perform this action. Common causes: the OAuth token has read-only scope and the request is not a GET; the user's access to this account was revoked; or the record belongs to another account.
conflict
HTTP 409. The update conflicted with another change or could not complete because of a temporary conflict. Refresh and retry.
duplicate
HTTP 409. The record already exists or would create a duplicate.
rate_limited
HTTP 429. Too many requests. The limit is 300 requests every 5 minutes per IP address; back off and retry once your rate falls below it. Separately, a Personal Access Token may only reach two different OwnerRez accounts from one IP address per 24 hours — integrations serving many customer accounts need an OAuth app. See
Rate limiting.
temporary_failure
HTTP 503. A temporary upstream or infrastructure failure occurred. Retry later.
internal_error
HTTP 500. An unexpected server error occurred. If it persists, contact support with your request timestamp and endpoint.
availability_calculation_failed
HTTP 400. Availability or pricing could not be calculated for the supplied dates or configuration. Check messages for specifics.