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
API
Platform API v1

Returned when

What to do

Related errors

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.

Open the console Plans

Written from the OneLifeVibe tool registry and platform configuration, and checked automatically before publishing. Something wrong? Tell us.