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.
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.
ISMS Copilot