Skip to main content

REST API

Everything the modeller does — validating a YAML model, generating NodeSet2.xml, reverse-engineering an existing nodeset — is available over HTTP. It is the same engine the web editor and the MCP server call.

Base URL

https://api.opcua-modeler.sterfive.io

Your first call

Validation works without an account. Save a model as model.yaml:

model.yaml
namespaceUri: http://example.com/UA/Demo/
version: 1.0.0
publicationDate: "2026-01-01T00:00:00Z"

objectTypes:
- browseName: MyDeviceType
subtypeOf: ua:BaseObjectType

and post it:

curl -X POST https://api.opcua-modeler.sterfive.io/api/v1/validate \
-H "Content-Type: text/yaml" \
--data-binary @model.yaml

The body is the model itself, as text/yaml — not JSON with the YAML inside a field. You get back diagnostics with severities, codes and line numbers.

Anonymous validation is capped at 50 calls per day per IP. See Quotas and rate limits.

What you can call

EndpointMethodBodyKey needed
/api/v1/validatePOSTtext/yamlno — 50/day per IP
/api/v1/dsl-referenceGETno
/api/v1/companionsGETno
/api/v1/openapiGETno
/api/v1/generatePOSTtext/yamlyes
/api/v1/reversePOSTapplication/xmlyes
/api/v1/try-serverPOST · GET · DELETEJSONyes (or a browser session)

generate accepts ?include=docs to return the Markdown documentation alongside the NodeSet2 XML and symbols. reverse accepts ?ns=<namespaceUri> to pick which namespace of the source nodeset to convert.

validate, generate and reverse also accept text/plain, which is what several HTTP clients send by default.

Interactive reference

Per-endpoint request and response schemas, with a Try It panel that runs against your own key, live in the app:

That page is generated from the OpenAPI document at /api/v1/openapi, so it always matches the deployed API. This section covers the parts a schema cannot express: how authentication behaves, what the quotas are, and what each error means.

Next