Route /v1/ and /v2/ to different upstream services, deprecate old versions gracefully, enforce version sunset dates. The thing you need when you have more than one API version running.
Every operation in Viaduct is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/tunnels — list all tunnels with optional search and filter query parametersPOST /api/tunnels — create a new tunnel recordGET /api/tunnels/{id} — retrieve a single tunnel by IDPUT /api/tunnels/{id} — update an existing tunnelDELETE /api/tunnels/{id} — remove a tunnelGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringA solo developer built a weekend project that needed tunnels tracking. Instead of spinning up Postgres and writing an admin panel, they added Viaduct as a sidecar process. The REST API covered every operation the project needed. Development time saved: roughly a full day.
When regulators or clients ask where your tunnels data is stored, the best answer is a specific server you own in a specific jurisdiction you chose. Viaduct makes that answer straightforward because the data never leaves your infrastructure.
GET /api/tunnels — List all tunnels. Supports ?q=keyword for search and ?status=value for filteringPOST /api/tunnels — Create a new tunnel. Send JSON with at least nameGET /api/tunnels/{id} — Fetch one tunnel by IDPUT /api/tunnels/{id} — Update fields on an existing tunnelDELETE /api/tunnels/{id} — Remove a tunnelGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringPoint curl at /api/tunnels to interact with Viaduct programmatically. The API follows predictable REST conventions: GET to list or fetch, POST to create, PUT to update, DELETE to remove. The response schema matches the internal data model exactly, so what you see in the dashboard is what the API returns.
Self-hosted API version router. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool viaduct
PORT=9660 ./viaduct
http://localhost:9660
Single binary. Embedded SQLite. No Docker. No database. No dependencies.
Your license key arrives by email within 5 minutes of checkout. Set it as an environment variable and restart the binary.
export VIADUCT_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./viaduct
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.