Independent API referenceField notes updated 29 Aug 2026

OpenAI schema error

Fix an OpenAI tool schema with anyOf at the root

Replace an unsupported root anyOf with an object-root discriminated contract that OpenAI Structured Outputs accepts.

Root schema must be objectRoot cannot use anyOfDiscriminated union rejectedZod discriminatedUnion failure

Reviewed Source: OpenAI Structured Outputs guide

OpenAI supports anyOf inside a schema, but the root must be an object and cannot itself be anyOf. Move the choice into a named property and add a discriminator.

Read the schema and its provider wrapper as one contract. APITC distinguishes target requirements from portable JSON Schema, applies mechanical repairs only when intent is recoverable, and identifies transformations that can change meaning.

Diagnostic procedure

Repair the schema, then recompile.

  1. 01

    Create an object root

    Use a stable outer object so every call has one predictable argument envelope.

  2. 02

    Nest the alternatives

    Put anyOf under a property such as action or payload.

  3. 03

    Add a discriminator

    Give each branch an enum or const-like action field so the model can select intentionally.

Before
{"anyOf":[{"type":"object","properties":{"email":{"type":"string"}}},{"type":"object","properties":{"id":{"type":"string"}}}]}
Target-safe shape
{"type":"object","properties":{"lookup":{"anyOf":[{"type":"object","properties":{"email":{"type":"string"}},"required":["email"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false}]}},"required":["lookup"],"additionalProperties":false}

Interactive check

Run the schema against a real target.

Paste JSON, choose a target, and inspect the compiled shape and every portability warning before copying the result.

Contract compilerlocal browser runtime
01 Source contract APITC canonical
02OpenAI strict
80compatibility
0 errors · 2 fixes · 0 warnings
fix$.inputSchemaClose this object

OpenAI strict requires additionalProperties: false on every object.

fix$.inputSchemaRequired array is incomplete

Strict mode requires every property in required. APITC will make limit nullable.

97 tokens compiled · input never leaves this tab

No account · no upload · no endpoint calledOpen the full tool schema compiler and operating notes →

FAQ

Before you ship

Does APITC upload my schema?

No. Parsing, diagnostics, and compilation run in your browser tab.

Is the compiled result guaranteed to preserve meaning?

Safe repairs are deterministic. When OpenAI cannot express a source constraint, APITC labels the transform as lossy instead of hiding it.

Protocol behavior checked against the OpenAI Structured Outputs guide. Recheck your pinned provider/API version before production deployment.