veldora-no Laws API

The Laws API from veldora-no — 3 operation(s) for laws.

Operations 3

GET /v1/laws Search Norwegian laws and regulations #
GET /v1/laws/{id} Get one law or regulation #
GET /v1/laws/{id}/sections/{section} Get one section of a law or regulation #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/veldora-no:veldora-no-laws-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

veldora-no-laws-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Veldora No Laws API
  version: 1.0.0
  contact:
    name: Veldora
    url: https://veldora.no/contact
  license:
    name: 'Data: NLOD 2.0 (Brreg, Lovdata), CC BY 4.0 (Doffin, Kartverket, PRH), Norges Bank (source named) and TED reuse terms; see description'
  x-deprecation-policy:
    url: https://veldora.no/docs#versioning
    noticeDays: 90
    headers:
    - Deprecation
    - Sunset
    - Link
  description: 'Operations tagged Laws across 2 of this provider''s published API definitions: veldora-no-openapi.json, veldora-no-original.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://veldora.no
tags:
- name: Laws
paths:
  /v1/laws:
    get:
      operationId: lawSearch
      summary: Search Norwegian laws and regulations
      description: 'Search current Norwegian laws and central regulations from Lovdata by words in the title or in the section text, optionally by type and ministry. Title matches rank first; each result carries up to three matching section snippets, not the full text.


        Price: 0.01 USDC per successful call. Failed calls (4xx/5xx) are not charged.'
      parameters:
      - name: q
        in: query
        required: false
        description: Up to 8 words; all must appear in the title, or all in one section. Leave out to list documents.
        schema:
          type: string
          minLength: 2
          maxLength: 100
      - name: type
        in: query
        required: false
        description: Only laws (lov) or only central regulations (forskrift).
        schema:
          type: string
          enum:
          - law
          - regulation
      - name: ministry
        in: query
        required: false
        description: Part of the ministry name, e.g. Justis.
        schema:
          type: string
          minLength: 2
          maxLength: 100
      - name: page
        in: query
        required: false
        description: Zero-based page.
        schema:
          type: integer
          minimum: 0
          default: 0
      - name: size
        in: query
        required: false
        description: Results per page.
        schema:
          type: integer
          minimum: 1
          maximum: 50
          default: 10
      - name: PAYMENT-SIGNATURE
        in: header
        required: false
        description: Base64-encoded x402 v2 PaymentPayload. Leave out to get the price.
        schema:
          type: string
      x-price:
        amount: '0.01'
        currency: USD
        asset: USDC
        atomic: '10000'
        network: eip155:8453
      responses:
        '200':
          description: Data. The PAYMENT-RESPONSE header holds the settlement receipt (base64 JSON).
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            PAYMENT-RESPONSE:
              schema:
                type: string
            X-Data-Fetched-At:
              schema:
                type: string
                format: date-time
            X-Data-Stale:
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data: {}
                  page:
                    type: object
                  meta:
                    type: object
        '400':
          description: Invalid input. Not charged; no payment is asked for.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Payment required. The PAYMENT-REQUIRED header (base64 JSON, x402 v2) lists what to pay. Sign it with an x402 client and resend the request with the PAYMENT-SIGNATURE header. The body repeats the requirements, plus `error` when a payment was rejected.
          headers:
            PAYMENT-REQUIRED:
              schema:
                type: string
              description: Base64-encoded PaymentRequired (x402 v2).
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequired'
        '404':
          description: Not found. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method not allowed.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The same payment is being processed by another request. Retry with the same header.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited. Not charged. See Retry-After.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: A data source answered with an error. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Upstream data source, facilitator or settlement unavailable. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Laws
    servers:
    - url: https://veldora.no
  /v1/laws/{id}:
    get:
      operationId: law
      summary: Get one law or regulation
      description: 'Metadata for one current law or central regulation from Lovdata (title, short title, date, ministry, last change, link to lovdata.no) and its table of contents: section ids, chapters and headings.


        Price: 0.005 USDC per successful call. Failed calls (4xx/5xx) are not charged.'
      parameters:
      - name: id
        in: path
        required: true
        description: Lovdata id, e.g. lov/2005-06-17-62 (a law) or forskrift/2010-01-29-72 (a regulation). Put it in the path as written, slash included.
        schema:
          type: string
          pattern: ^(lov|forskrift)/\d{4}-\d{2}-\d{2}(-\d+)?$
      - name: PAYMENT-SIGNATURE
        in: header
        required: false
        description: Base64-encoded x402 v2 PaymentPayload. Leave out to get the price.
        schema:
          type: string
      x-price:
        amount: '0.005'
        currency: USD
        asset: USDC
        atomic: '5000'
        network: eip155:8453
      responses:
        '200':
          description: Data. The PAYMENT-RESPONSE header holds the settlement receipt (base64 JSON).
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            PAYMENT-RESPONSE:
              schema:
                type: string
            X-Data-Fetched-At:
              schema:
                type: string
                format: date-time
            X-Data-Stale:
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data: {}
                  page:
                    type: object
                  meta:
                    type: object
        '400':
          description: Invalid input. Not charged; no payment is asked for.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Payment required. The PAYMENT-REQUIRED header (base64 JSON, x402 v2) lists what to pay. Sign it with an x402 client and resend the request with the PAYMENT-SIGNATURE header. The body repeats the requirements, plus `error` when a payment was rejected.
          headers:
            PAYMENT-REQUIRED:
              schema:
                type: string
              description: Base64-encoded PaymentRequired (x402 v2).
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequired'
        '404':
          description: Not found. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method not allowed.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The same payment is being processed by another request. Retry with the same header.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited. Not charged. See Retry-After.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: A data source answered with an error. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Upstream data source, facilitator or settlement unavailable. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Laws
    servers:
    - url: https://veldora.no
  /v1/laws/{id}/sections/{section}:
    get:
      operationId: lawSection
      summary: Get one section of a law or regulation
      description: 'The full text of one section (§ or artikkel) of a current Norwegian law or regulation, with the ids of the previous and next section.


        Price: 0.005 USDC per successful call. Failed calls (4xx/5xx) are not charged.'
      parameters:
      - name: id
        in: path
        required: true
        description: Lovdata id, e.g. lov/2005-06-17-62 (a law) or forskrift/2010-01-29-72 (a regulation). Put it in the path as written, slash included.
        schema:
          type: string
          pattern: ^(lov|forskrift)/\d{4}-\d{2}-\d{2}(-\d+)?$
      - name: section
        in: path
        required: true
        description: 'Section id as listed in the table of contents: § 3-1, URL-encoded, or just 3-1.'
        schema:
          type: string
          minLength: 1
          maxLength: 60
      - name: PAYMENT-SIGNATURE
        in: header
        required: false
        description: Base64-encoded x402 v2 PaymentPayload. Leave out to get the price.
        schema:
          type: string
      x-price:
        amount: '0.005'
        currency: USD
        asset: USDC
        atomic: '5000'
        network: eip155:8453
      responses:
        '200':
          description: Data. The PAYMENT-RESPONSE header holds the settlement receipt (base64 JSON).
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            PAYMENT-RESPONSE:
              schema:
                type: string
            X-Data-Fetched-At:
              schema:
                type: string
                format: date-time
            X-Data-Stale:
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data: {}
                  page:
                    type: object
                  meta:
                    type: object
        '400':
          description: Invalid input. Not charged; no payment is asked for.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Payment required. The PAYMENT-REQUIRED header (base64 JSON, x402 v2) lists what to pay. Sign it with an x402 client and resend the request with the PAYMENT-SIGNATURE header. The body repeats the requirements, plus `error` when a payment was rejected.
          headers:
            PAYMENT-REQUIRED:
              schema:
                type: string
              description: Base64-encoded PaymentRequired (x402 v2).
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequired'
        '404':
          description: Not found. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method not allowed.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The same payment is being processed by another request. Retry with the same header.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited. Not charged. See Retry-After.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error. Not charged.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: A data source answered with an error. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Upstream data source, facilitator or settlement unavailable. Not charged; retry.
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Laws
    servers:
    - url: https://veldora.no
components:
  headers:
    RateLimit-Limit:
      description: Requests allowed per window.
      schema:
        type: integer
    RateLimit:
      description: Remaining quota and seconds to reset, structured (draft-ietf-httpapi-ratelimit-headers), e.g. "per-ip";r=119;t=60.
      schema:
        type: string
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
    RateLimit-Reset:
      description: Seconds until the window resets.
      schema:
        type: integer
    RateLimit-Remaining:
      description: Requests left in the current window.
      schema:
        type: integer
    RateLimit-Policy:
      description: 'Quota policy: 120 requests per 60 seconds per IP, e.g. "per-ip";q=120;w=60.'
      schema:
        type: string
  schemas:
    Error:
      type: object
      description: Every error from the API has this shape. Branch on `error.code`; `retryable` says whether the same request can succeed later.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Machine-readable error code.
              examples:
              - invalid_orgnr
              - invalid_id
              - invalid_parameter
              - unknown_parameter
              - missing_filter
              - paging_limit
              - enk_name_search
              - not_found
              - method_not_allowed
              - rate_limited
              - payment_in_progress
              - settlement_pending
              - payments_unavailable
              - facilitator_unavailable
              - data_unavailable
              - upstream_unavailable
              - temporarily_unavailable
              - internal_error
            message:
              type: string
              description: What went wrong and what to do next, in English.
            retryable:
              type: boolean
              description: 'True for 429, 502, 503 and 504: try again later with the same request.'
            docs:
              type: string
              format: uri
              description: Link to the error reference.
          required:
          - code
          - message
          - retryable
          - docs
          additionalProperties: true
      required:
      - error
    PaymentRequired:
      type: object
      description: x402 v2 PaymentRequired. The same object is base64-encoded in the PAYMENT-REQUIRED header.
      properties:
        x402Version:
          type: integer
          const: 2
        error:
          type: string
          description: Why a sent payment was refused (absent on the first 402).
        resource:
          type: object
          properties:
            url:
              type: string
              format: uri
            description:
              type: string
            mimeType:
              type: string
        accepts:
          type: array
          items:
            type: object
            properties:
              scheme:
                type: string
                const: exact
              network:
                type: string
                description: CAIP-2 chain id, e.g. eip155:8453.
              amount:
                type: string
                description: Price in USDC atomic units (6 decimals).
              asset:
                type: string
                description: USDC contract address.
              payTo:
                type: string
              maxTimeoutSeconds:
                type: integer
              extra:
                type: object
            required:
            - scheme
            - network
            - amount
            - asset
            - payTo
        extensions:
          type: object
      required:
      - x402Version
      - accepts
externalDocs:
  description: Docs, pricing and examples
  url: https://veldora.no/docs
x-refined-from:
- veldora-no-openapi.json
- veldora-no-original.json
x-mcp:
  url: https://veldora.no/mcp
  transport: streamable-http