Say yes to the customer in the next country.

Pin each customer's national law on every request, so a new market never changes the answers your existing customers get.

If your product has its own assistant and customers in more than one country, pin that customer's national modules on each request. Each module publishes the date it was last verified, and every change is dated in a public log.

One request, pinned to one customer's country
curl https://api.ismscopilot.com/v1/chat/completions \
  -H "Authorization: Bearer sk-isms-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "isms-fast",
    "messages": [
      {"role": "user", "content": "Which NIS 2 incident reports do we owe, and to whom?"}
    ],
    "ismscopilot": { "frameworks": ["NIS_2_NL"] }
  }'

The case every growing platform meets

A platform builds its assistant on one country's NIS 2 law. A customer from another member state signs and asks about their own duties. That country transposed the same directive with its own entity categories, reporting chain and deadlines. Load the new law into shared knowledge and every existing customer's answers change; leave it out and the new customer gets the wrong country. Per-request modules solve both.

Route by tenant

Your backend already knows where each customer operates. Pass up to eight module ids per request; the response header names the modules used, so you can log them with the answer.

import os
from openai import OpenAI

client = OpenAI(base_url="https://api.ismscopilot.com/v1", api_key=os.environ["ISMS_API_KEY"])

# Your backend already knows where each customer operates.
NIS2_BY_COUNTRY = {"BE": "NIS_2_BE", "IT": "NIS_2_IT", "NL": "NIS_2_NL"}

def ask(tenant, messages):
    frameworks = [NIS2_BY_COUNTRY[tenant.country], *tenant.frameworks]  # at most 8
    return client.chat.completions.with_raw_response.create(
        model="isms-fast",
        messages=messages,
        extra_body={"ismscopilot": {"frameworks": frameworks}},
    )

# Log response.headers["x-isms-frameworks"] with the answer.

Coverage you can inspect

Read from the public catalog on 2026-11-09.

Framework modules
151, each with a public last-verified date
National NIS 2 modules
27, one per member state, plus the directive. Some track laws still going through parliament; the module says which.
Change log
357 dated changes, each naming the modules it touched

Price

Per answer
About $24 per 1,000 answers on isms-fast at a measured size (about 6,500 input and 700 output tokens with one national module pinned). $2.80 in, $8.80 out per million tokens. isms-thinking adds reasoning tokens.
Volume
Volume pricing on request.

What it does not do

No per-customer sub-accounts: give each customer its own key with its own spend cap. No JSON mode or tool calling: ask for structure in the prompt. The answers are compliance guidance your product shows to people who decide; they are not legal advice.

Frequently Asked Questions

How do I know a module changed?

Every change is a dated entry in the public change log (GET /v1/frameworks/changelog), with the modules it touched; most link their evidence. Poll it on your schedule.

Can the EU customers stay on the EU path?

Yes: call the -eu aliases for those tenants. The pinning works the same way on both paths.

Pin your next country.

Create a key and send the request above with your customer's module.