HTTP and SSE API¶
The canonical OpenAPI document is published at https://solver.vsnexa.com/openapi.json. The copy bundled with this site is generated byte-for-byte from the repository's canonical openapi/openapi.json during each build.
Operations¶
Nexa V6 Solver Integration API operations¶
| Method | Path | Purpose | Operation ID |
|---|---|---|---|
GET | /.well-known/nexa-solver.json | getSolverManifest | getSolverManifest |
GET | /.well-known/nexa-onchain-discovery.json | getOnchainDiscovery | getOnchainDiscovery |
GET | /openapi.json | getOpenApi | getOpenApi |
GET | /.well-known/nexa-standards.json | getStandardsManifest | getStandardsManifest |
GET | /api/v6/solver-discovery | getSolverDiscovery | getSolverDiscovery |
GET | /api/v6/solver-feed | getSolverFeed | getSolverFeed |
GET | /api/v6/solver-feed/events | streamSolverFeed | streamSolverFeed |
GET | /api/v6/routes/{routeId} | getRouteDetail | getRouteDetail |
POST | /api/v6/execution-permits/request-message | buildPermitRequestMessage | buildPermitRequestMessage |
POST | /api/v6/execution-permits | createExecutionPermit | createExecutionPermit |
GET | /api/v6/execution-permits/{fillId} | getExecutionPermit | getExecutionPermit |
Request rules¶
- Send and accept JSON for HTTP API operations unless OpenAPI specifies the SSE event stream.
- Preserve base-10 strings for execution-relevant integers.
- Supply
Idempotency-Keyfor permit creation exactly as documented. - Sign the canonical permit-request message; a signed discovery or Feed object does not authorize a fill.
- Handle documented structured error codes rather than parsing message text.
Signed Feed snapshots¶
The Feed response contains a signed payload plus hash, declared signer, and signature. Consumers must recompute the canonical hash, recover the signer, and check expiry before exposing routes to selection logic. Query filters reduce the returned route set but do not relax verification.
Confirmed-set SSE¶
The event stream publishes changes to the confirmed active set. Use Last-Event-ID when reconnecting, process events in order, and fall back to a fresh verified HTTP snapshot when recovery is not possible. A subscription is transport, not authority: verify signed state before execution.
Example browser-independent stream request:
curl --no-buffer \
-H 'Accept: text/event-stream' \
https://solver.vsnexa.com/api/v6/solver-feed/events
Permit requests¶
The local SDK operation is the preferred way to create the canonical request message. The HTTP request-message operation exists for compatibility. In both cases, sign the exact bytes and submit the identical normalized request with the resulting signature.
Permit issuance is the boundary at which a selected quote becomes authorized for a specific payer, recipient, amount, validity window, and fill ID.
Caching and retries¶
Static discovery, standards, and OpenAPI documents may be cached according to their response headers. Feed, route, permit, status, and SSE data are dynamic; do not apply static-document caching behavior to them.
Use idempotent reads freely. Retry permit submission only with the same request and idempotency key. If the intent changes, use a new key and obtain a new signature.
OpenAPI tooling¶
Download the canonical schema for client generation or inspection:
curl --fail --silent --show-error \
https://solver.vsnexa.com/openapi.json \
--output nexa-v6-openapi.json
Generated clients must still implement the signature, authority, and exact 1+1 rules described in Solver integration.