API-dokumentasjon

    Integrer Justera i dine egne systemer via REST API

    Autentisering

    Alle API-kall krever en gyldig API-nøkkel i X-API-Key-headeren.

    Opprett nøkler under API-nøkler.

    Endepunkter

    Base-URL står i appen under API-nøkler.

    POST
    /api-gateway
    analysis

    Analyser et juridisk spørsmål med verifisert kildehenvisning

    curl -X POST "<BASE_URL>/api-gateway" \
      -H "X-API-Key: sk_live_..." \
      -H "Content-Type: application/json" \
      -d '{
        "endpoint": "analyze",
        "question": "Hva er oppsigelsesfristen for en ansatt med 5 års ansiennitet?"
      }'
    JavaScript-eksempel
    const response = await fetch("<BASE_URL>/api-gateway", {
      method: "POST",
      headers: {
        "X-API-Key": "sk_live_...",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        endpoint: "analyze",
        question: "Hva er oppsigelsesfristen for en ansatt med 5 års ansiennitet?",
      }),
    });
    
    const result = await response.json();
    console.log(result.data);

    POST
    /api-gateway
    documents

    Sammenlign to dokumenttekster og finn avvik

    curl -X POST "<BASE_URL>/api-gateway" \
      -H "X-API-Key: sk_live_..." \
      -H "Content-Type: application/json" \
      -d '{
        "endpoint": "compare",
        "document_a": "Tekst fra mottatt kontrakt...",
        "document_b": "Tekst fra vår standard..."
      }'

    POST
    /api-gateway
    documents

    Trekk ut tekst fra et PDF-dokument (base64-kodet)

    curl -X POST "<BASE_URL>/api-gateway" \
      -H "X-API-Key: sk_live_..." \
      -H "Content-Type: application/json" \
      -d '{
        "endpoint": "extract",
        "document_base64": "JVBERi0xLjQg..."
      }'

    Rate limits og feilkoder

    Hver API-nøkkel har en konfigurerbar rate limit (standard: 100 kall/time).

    200 — Vellykket
    400 — Ugyldig forespørsel
    401 — Ugyldig API-nøkkel
    403 — Manglende tilgang / scope
    429 — Rate limit overskredet
    500 — Intern feil
    Eksempel-respons
    {
      "success": true,
      "endpoint": "analyze",
      "response_time_ms": 2340,
      "data": {
        "conclusion": "...",
        "findings": [...],
        "sources": [...],
        "confidence": 0.85
      }
    }

    Partner og whitelabel

    For plattformer som bygger Justera inn som en agent eller juridisk analysemotor under egen merkevare.

    Tilleggsfelt i respons (kun for partner-nøkler)

    Når API-nøkkelen er av tier partner_master eller partner_subkey, returnerer gatewayen branding og usage i tillegg til standardresponsen.

    {
      "success": true,
      "endpoint": "analyze",
      "response_time_ms": 2340,
      "request_id": "uuid-...",
      "data": { /* analyseresultat */ },
      "branding": {
        "powered_by": "Justera",          // null hvis whitelabel er aktivert
        "badge_url": "https://justera.no/badge.svg",
        "badge_link": "https://justera.no"
      },
      "usage": {
        "billable_nok": 8.00,              // din kostnad for dette kallet
        "request_id": "uuid-..."
      }
    }

    Eksempel: render "Powered by Justera"-badge

    {response.branding?.powered_by && (
      <a href={response.branding.badge_link} target="_blank" rel="noopener">
        <img src={response.branding.badge_url} alt="Powered by Justera" />
      </a>
    )}

    Rate limits (partner)

    Undernøkler arver grensen fra hovednøkkelen.

    Fakturering

    Hvert vellykket kall logges med billable_nok i partner_usage. Månedlig fakturering eksporteres som CSV fra driftskonsollen.

    Koble Justera til AI-agenter

    Bruk Justera som verktøy i MCP-kompatible AI-klienter eller din egen agent-orkestrator.

    MCP (Model Context Protocol)

    Streamable HTTP-endpoint som eksponerer justera_analyze, justera_compare, og justera_extract som MCP-tools.

    <BASE_URL>/mcp-server
    
    Header: X-API-Key: sk_live_...

    Legg inn URL og header i klientens oppsett for tilkoblinger.


    OpenAI-kompatibel /v1/chat/completions

    Kompatibelt med standard chat-completions-format. Modellnavn: justera-legal-nb.

    Base URL: <BASE_URL>/openai-compat
    Auth:     Authorization: Bearer sk_live_...
    
    curl <BASE_URL>/openai-compat/v1/chat/completions \
      -H "Authorization: Bearer sk_live_..." \
      -H "Content-Type: application/json" \
      -d '{
        "model": "justera-legal-nb",
        "messages": [
          {"role": "user", "content": "Hva er oppsigelsesfristen ved 5 års ansiennitet?"}
        ]
      }'

    Responsen følger OpenAI-formatet og inkluderer en ekstra justera-blokk med sources og confidence.


    Async-callback for partner-agenter

    Tunge analyser kjører asynkront (10-stegs pipeline). Registrer en webhook for å motta callback når en analyse er ferdig.

    Event:  analysis.completed
    Signed: HMAC-SHA256 (header: X-Justera-Signature)
    Body:   { "sessionId": "...", "runId": "...", "mode": "...",
              "tokens": 0, "durationMs": 0 }

    Konfigurer webhook-URL og hemmelighet under API-nøkler → Webhooks.


    Auto-discovery (.well-known)

    Plugin manifest:  https://justera.no/.well-known/ai-plugin.json
    OpenAPI 3.1:      https://justera.no/.well-known/openapi.json

    Brukes av ChatGPT Custom Actions og andre auto-discovery-klienter.