Custom GPT Action Schema Validator
Paste the OpenAPI schema for a Custom GPT action and see every error the GPT builder will raise — and the ones it will not raise but that stop the action working — with an auto-fixed version to copy back.
Everything runs locally: your schema never leaves your browser.
Validate a GPT action schema
4 errors and 1 warning.
- error
paths./todos.get
In path /todos, method get is missing operationId; skipping. Suggested: getTodos. - warning
paths./todos.get.parameters.X-Workspace
Header parameter "X-Workspace": custom headers are not supported in GPT actions. Move it to the query string or body, or configure it as API-key authentication. - error
paths./todos/{id}.delete
Path parameter {id} is not declared in parameters (in: path, required: true). - error
paths./todos.get.responses.200.content.application/json.schema
In context=(paths./todos.get.responses.200.content.application/json.schema), array schema missing items. Say what the array contains with items. - error
paths./todos.post.requestBody.content.application/json.schema
In context=(paths./todos.post.requestBody.content.application/json.schema), object schema missing properties. List the object's fields under properties.
Operations
| Method | Path | operationId | Asks to confirm? |
|---|---|---|---|
| GET | /todos | — missing | No (default) |
| POST | /todos | createTodo | Yes (default) |
| DELETE | /todos/{id} | deleteTodo | Yes (default) |
Auto-fixed schema
- Added operationId getTodos to GET /todos
- Added items: {} to paths./todos.get.responses.200.content.application/json.schema — say what the array holds if you know it
- Added empty properties to paths./todos.post.requestBody.content.application/json.schema — list its real fields if you know them
Only mechanical fixes are made. Anything listed above that the auto-fix cannot decide for you — the server URL, a header, a long description — still needs your edit.
Reading the example
The example looks like a normal OpenAPI file and would pass a generic validator, but the GPT
builder would reject or cripple five parts of it. The GET has no operationId, so it is
skipped. Its response is an array with no items, and the POST body is an object with no
properties — both refused. /todos/{id} never declares
id. And the X-Workspace header will never be sent, because GPT
actions do not support custom headers. The auto-fix supplies getTodos, the
empty items and properties; the path parameter and the header
need decisions only you can make.
OpenAPI spec validator for ChatGPT actions
A general-purpose validator checks the OpenAPI specification. An OpenAPI spec validator for ChatGPT actions has to check what the GPT builder adds on top: an operationId everywhere, explicit object properties and array items, the 300 and 700 character limits, a single HTTPS host on port 443, one authentication type, and OAuth URLs on the API’s own domain. Each problem is reported with the builder’s own wording where it has one, so you can match it to the error you saw.
Fixing GPT action OpenAPI schema errors
Most GPT action OpenAPI schema error messages come from schemas generated
by a framework or copied from API docs, which leave operationIds out and describe open
objects loosely. Run the schema through here, copy the auto-fixed version back into the
action editor, then fix the remaining items by hand. When you add an operation that changes
data, decide whether ChatGPT should always ask first: set
x-openai-isConsequential: true for payments and deletions, or
false to allow “Always allow” on harmless writes.