Stahl & Söhne · Developer Portal
API & agent integration
Programmatic access for AI agents and developers: versioned REST under /api/v1, OpenAPI 3.1, scoped bearer tokens, structured JSON errors, and rate-limit headers. Prefer public content discovery via llms.txt before calling write actions.
Quickstart
- Read when to use Stahl & Söhne and the OpenAPI contract.
- Request a scoped bearer token from office@stahlundsoehne.at (scopes:
service:read,quote:read,lead:create). - Call
GET /api/v1/health, then a scoped endpoint withAuthorization: Bearer <token>. - On errors, parse JSON
error.code,error.message, anderror.resolution. HonorRetry-Afteron HTTP 429.
curl -s https://www.stahlundsoehne.at/api/v1/health | jq
curl -s -X POST https://www.stahlundsoehne.at/api/v1/agent/check-service-area \
-H "Authorization: Bearer $STAHL_AGENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"postalCode":"1010","region":"Wien"}'Public REST endpoints (v1)
Canonical versioned surface. Legacy aliases without /v1 remain available for compatibility.
| Method | Path | Auth | Notes |
|---|---|---|---|
| GET | /api/v1/health | Public | Health + rate-limit policy echo |
| POST | /api/v1/send-removal-request | Public | Create a relocation estimate request |
| POST | /api/v1/agent/check-service-area | Bearer · service:read | Check postal/region coverage |
| POST | /api/v1/agent/estimate-price | Bearer · quote:read | Indicative price range |
| POST | /api/v1/agent/request-callback | Bearer · lead:create | Capture callback lead |
Versioning & deprecation
- URL path versioning: canonical routes under
/api/v1/. - Breaking changes ship as
/api/v2/;v1stays stable. - Deprecated routes send
DeprecationandSunsetheaders with at least 90 days notice before removal. Details are mirrored in OpenAPIinfo.descriptionandGET /api/v1/health.
Rate limits
Default agent/API budget: 60 requests / 60 seconds per token (or IP for public routes). Responses include RFC-style RateLimit / RateLimit-Policy headers plus X-RateLimit-*. HTTP 429 includes Retry-After.
Markdown content negotiation
Send Accept: text/markdown to HTML routes (homepage, developer portal, and other live pages). Responses use Content-Type: text/markdown and Vary: Accept. Unknown paths return HTTP 404 with a short markdown recovery body pointing at sitemap, llms.txt, and this portal.
CLI
Official CLI package @stahlundsoehne/cli scripts health checks and scoped agent calls without hand-rolling HTTP.
npm install -g @stahlundsoehne/cli # or: npx @stahlundsoehne/cli stahlundsoehne health stahlundsoehne service-area --postal 1010 --token $STAHL_AGENT_TOKEN stahlundsoehne docs
Source: packages/cli in the public site repository. Publish to npm when credentials are available; local runs work via node packages/cli/bin/stahlundsoehne.mjs.
Sandbox
Use production URLs with a sandbox-scoped token (request via email). estimate-price returns indicative ranges only; request-callback acknowledges capture for authorized tokens. Never commit bearer tokens to source control.
Bereit für Ihren Umzug?
Kostenlose Besichtigung, Fixpreis schriftlich bestätigt — Rückruf in der Regel innerhalb von 60 Minuten.