Platform API error
invalid_url
invalid_url is the HTTP 400 error returned when the Platform API refuses a webhook endpoint URL during subscription creation or console setup.
Updated November 6, 2026
- HTTP status
- 400
- Code
invalid_url
Returned when
- POST /api/platform/v1/subscriptions (or adding an endpoint in the console) with a URL that is not https on port 443, points at loopback, a private range or a bare IP, or carries credentials.
What to do
- Use a public https:// hostname on port 443 with no user:password in the URL.
Related errors
- endpoint_limit The plan already has as many webhook endpoints as it allows.
- invalid_topic A subscription topic or an ingest topic is not valid.
What it means
invalid_url is a validation error. The Platform API returns it with HTTP 400 when it will not accept the webhook endpoint URL you supplied. You can hit it by calling POST /api/platform/v1/subscriptions, or by adding an endpoint in the console.
The URL is refused when it is not https on port 443, when it points at loopback or a private range, when it is a bare IP address, or when it carries credentials in the form user:password. The response body contains an error object with code, message and hint. The code is invalid_url. The message and hint help a person read the failure. Codes are stable, so branch on code rather than message text.
Why you are seeing it
You see invalid_url because the endpoint URL does not meet the rules the platform applies to webhook endpoints. Typical causes are an http:// URL, an https:// URL on a port other than 443, a host in a private range, a loopback host, a bare IP address, or a URL that includes user:password.
The same rules apply when you add an endpoint in the console. A URL that the API refuses at POST /api/platform/v1/subscriptions will also be refused in the console form.
How to fix it
Use a public https:// hostname on port 443 with no user:password in the URL. If the endpoint currently uses http://, switch to https://. If it uses a port other than 443, move it to 443. If the host is loopback, in a private range, or written as a bare IP address, use a public hostname instead.
Then retry POST /api/platform/v1/subscriptions or save the endpoint again in the console. Do not retry the unchanged request; a 400 validation failure will not clear by itself. If invalid_url comes back, re-check the https requirement, port, host type and credentials.
Handling it in code
Read the error.code field in the response. Compare it with invalid_url and do not parse the message to decide what happened; the code is stable, while messages can change. Log message and hint for the person who fixes the endpoint configuration.
Treat invalid_url as non-retryable until the URL changes. Check the endpoint URL before calling POST /api/platform/v1/subscriptions, and reject configuration that is not https on port 443, uses loopback or a private range, is a bare IP address, or contains user:password. After the configuration is corrected, send a new request.
If your code handles several webhook errors, keep invalid_url separate from endpoint_limit and invalid_topic. They are related codes, not the same condition; match each code on its own.
Questions
What URL should I use for a webhook endpoint?
Use a public https:// hostname on port 443 with no user:password in the URL. The API refuses loopback addresses, private ranges, bare IP addresses, and URLs that carry credentials.
Why does an https URL still return invalid_url?
HTTPS alone is not enough. The URL must also use port 443, point at a public hostname rather than loopback, a private range or a bare IP address, and leave out user:password.
Is invalid_url the same as endpoint_limit or invalid_topic?
No. invalid_url is the code for a refused webhook endpoint URL. endpoint_limit and invalid_topic are separate related codes, so check error.code to tell them apart.
Keys, plans and usage live in the console: rotate keys, add webhook endpoints, see the last 30 days.
Written from the OneLifeVibe tool registry and platform configuration, and checked automatically before publishing. Something wrong? Tell us.