- Bazowy URL
- oakmonttechnologies.com/api/v1
- Uwierzytelnianie
- Bearer
- Format
- REST · JSON
- Limit
- Wg planu
Twórz na OAKMONT,we własnym stacku.
Wywołuj naszą platformę programowo - skany dostępności, wyceny i więcej - w CI, w swoim CMS lub we własnym produkcie. REST, JSON, uwierzytelnianie za pomocą klucza API i rozliczanie za każde wywołanie.
Żądanie
curl -X POST https://oakmonttechnologies.com/api/v1/scan \
-H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.gov/about"}'Odpowiedź
{
"id": "9f3c…",
"url": "https://example.gov/about",
"score": 82,
"grade": "B",
"totals": { "critical": 1, "serious": 2, "moderate": 1 },
"issues": [
{ "impact": "critical", "wcag": "1.1.1",
"title": "Images missing alt text (3)",
"help": "Every <img> needs an alt attribute…", "count": 3 }
]
}Uwierzytelnianie
Utwórz klucz w Portal → API dla programistów. Wysyłaj go przy każdym żądaniu:
Authorization: Bearer oak_live_xxxBazowy URL: https://oakmonttechnologies.com/api/v1
POST /scan - skan dostępności
Skanuj dowolny publiczny URL pod kątem typowych naruszeń WCAG 2.1 AA / Section 508.
curl -X POST https://oakmonttechnologies.com/api/v1/scan \
-H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.gov/about"}'{
"id": "9f3c…",
"url": "https://example.gov/about",
"score": 82,
"grade": "B",
"totals": { "critical": 1, "serious": 2, "moderate": 1 },
"issues": [
{ "impact": "critical", "wcag": "1.1.1",
"title": "Images missing alt text (3)",
"help": "Every <img> needs an alt attribute…", "count": 3 }
]
}POST /quote - wyceń zlecenie
Otrzymaj szczegółową wycenę zlecenia naprawczego na podstawie aktualnego cennika.
curl -X POST https://oakmonttechnologies.com/api/v1/quote \
-H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" \
-d '{"plan_key": "page_508", "chars": 12000}'Rodzina skanerów
Te same silniki co w darmowych narzędziach, wliczane do miesięcznego limitu: przejrzystość wg AI Act, trackery i zgody, dostarczalność e-maili oraz sprawdzenie struktury faktury FA. Pełne formaty żądań i odpowiedzi znajdziesz w indeksie maszynowym pod GET /api/v1.
# AI Act transparency (Article 50)
curl -X POST https://oakmonttechnologies.com/api/v1/ai-scan -H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" -d '{"url": "https://example.com"}'
# Trackers and consent platform
curl -X POST https://oakmonttechnologies.com/api/v1/privacy-scan -H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" -d '{"url": "https://example.com"}'
# Deliverability: MX, SPF, DMARC, DKIM
curl -X POST https://oakmonttechnologies.com/api/v1/email-check -H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" -d '{"domain": "example.com"}'
# Polish FA invoice structure (KSeF)
curl -X POST https://oakmonttechnologies.com/api/v1/ksef-check -H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" -d '{"xml": "<Faktura>...</Faktura>"}'
# LLM regression grading (deterministic, no model runs)
curl -X POST https://oakmonttechnologies.com/api/v1/eval -H "Authorization: Bearer oak_live_xxx" \
-H "Content-Type: application/json" \
-d '{"cases": [{"key": "refund", "assertions": [{"kind": "contains", "value": "30 days"}]}], "answers": {"refund": "You have 30 days to return it."}}'POST /gate - Bramka buildu
Twój pipeline uruchamia sprawdzenia na gałęziach i hostach niedostępnych z zewnątrz i przesyła wyniki. Tu zapada decyzja, czy build przechodzi, z dokładnym uzasadnieniem - także tym, dlaczego pozostałe reguły się nie uruchomiły.
# The ruleset your build is held to, worst first by what we actually see
curl https://oakmonttechnologies.com/api/v1/rules/ci?level=AA -H "Authorization: Bearer oak_live_xxx"
# Your pipeline ran the checks; this decides the build and can sign the verdict
curl -X POST https://oakmonttechnologies.com/api/v1/gate -H "Authorization: Bearer oak_live_xxx" -H "Content-Type: application/json" -d '{"url": "https://staging.internal/checkout", "level": "AA", "fail_on": "serious",
"prove": true, "findings": [{"code": "input-no-label", "selector": "#cvc"}]}'{
"passed": false,
"level": "AA", "fail_on": "serious",
"failures": [
{ "code": "input-no-label", "criterion": "1.3.1", "impact": "critical",
"count": 1, "selectors": ["#cvc"] }
],
"advisories": [
{ "code": "heading-skip", "criterion": "1.3.1",
"advisory_because": "No criterion says heading levels may not skip." }
],
"digest": "3f9a…",
"proof": { "id": "…", "verify_url": "https://oakmonttechnologies.com/verify/…" }
}Dwa fałszywe alarmy i ktoś dopisuje continue-on-error - od tej chwili bramka jest tylko ozdobą. Kryterium powyżej zamówionego poziomu, kryterium wycofane w WCAG 2.2 i wszystko, czego maszyna nie rozstrzygnie uczciwie, trafia do raportu i nigdy nie blokuje. Przy prove werdykt dostaje podpisane poświadczenie z dokładnym zestawem reguł, więc zielonego buildu nie da się później ocenić ponownie według zaostrzonego zestawu.
Notariat
Datowane, publicznie sprawdzalne potwierdzenie dla skrótu, który liczysz u siebie - plik zostaje u Ciebie. Rozliczane za potwierdzenie, nie za wywołanie, bo to właśnie potwierdzenie zachowuje Twój klient.
Błędy
Nieudane wywołania zwracają standardowe kody stanu HTTP i treść JSON z komunikatem detail.
| Status | Znaczenie |
|---|---|
| 400 | Nieprawidłowa treść żądania, na przykład błędny URL lub brakujące pole. |
| 401 | Brakujący, błędny lub odwołany klucz API. |
| 404 | Nie znaleziono wskazanego zasobu, na przykład nieznany plan_key w /quote. |
| 429 | Osiągnięto miesięczny limit API. Zobacz nagłówki Retry-After i X-RateLimit. |
{ "detail": "Invalid or revoked API key." }Limity
Wywołania są zliczane miesięcznie w zależności od planu (Free 100 · Basic 5000 · Pro 50 000). Po przekroczeniu limitu zwracany jest kod 429. Możesz w każdej chwili zmienić plan w sekcji rozliczeń.
Każda odpowiedź zawiera X-RateLimit-Limit, X-RateLimit-Remaining oraz X-RateLimit-Reset (znacznik czasu Unix wskazujący początek następnego miesiąca). Kod 429 zwraca dodatkowo Retry-After w sekundach.
HTTP/1.1 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4987
X-RateLimit-Reset: 1751328000
# When the monthly quota is exhausted:
HTTP/1.1 429 Too Many Requests
Retry-After: 1209600
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0Z JavaScriptu
Te same dwa wywołania, bez curla.
const res = await fetch("https://oakmonttechnologies.com/api/v1/scan", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OAKMONT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({url: "https://example.gov/about"}),
});
if (!res.ok) throw new Error(`OAKMONT ${res.status}: ${await res.text()}`);
const {score, grade, issues} = await res.json();Specyfikacja czytelna maszynowo
API opisuje samo siebie. Wskaż generatorowi dokument OpenAPI i dostaniesz typowanego klienta zamiast ręcznie pisanych wywołań fetch.
https://oakmonttechnologies.com/api/openapi.jsonDokument powstaje z działającej usługi, więc nigdy nie rozjeżdża się z endpointami, które opisuje.
Osadź cennik
Jedna linijka kodu, bez klucza i bez budowania. Korzysta z tego samego katalogu co /pricing, więc strona, która go osadza, nie może się zdezaktualizować. data-ref przenosi Twój kod partnerski do każdego linku; data-group zawęża widok do jednej rodziny planów.
<script src="https://oakmonttechnologies.com/embed/rate-card.js"
data-ref="your-partner-code"
data-group="managed_sub"></script>Albo odczytaj jako JSON: https://oakmonttechnologies.com/api/public/rate-card
Pełna dokumentacja
Przeglądaj pełny, maszynowo czytelny indeks endpointów pod adresem /api/v1.
