Inspection Support Network

Integrate with ISN

APIs, webhooks, and an MCP server for orders, clients, agents, and scheduling.

Each ISN customer has a separate ISN account at its own web address. You can't guess that address from the customer's name, so ISN offers two APIs: the ISN API for working with a customer's data, and the Admin API for looking up where a customer's account is hosted.

Use footprints to discover upcoming inspections without having to repeatedly check the full order list.

Four things you need before your first call

Service domain
The web address of the customer's ISN site, without anything after the domain name. Most customers use inspectionsupport.com. White-label customers use their own, such as 4isn.com.
Company key
A short, lowercase identifier for one customer, such as yourcompany. It appears in the customer's ISN URL, and customers know theirs.
API endpoint
The base URL for every ISN API call: https://{service domain}/{company key}/rest. Example: https://4isn.com/yourcompany/rest. Each customer's data is reachable only at its own endpoint.
Access keys
A pair of credentials (an access key and a secret access key) that an ISN user creates under Settings → My Access Keys. Use these instead of a username and password. The user can revoke them at any time without changing their password.

Why there are two APIs

Before you can call a customer's ISN API, you need their endpoint, and the endpoint depends on their domain. If you already have the domain and company key, build the endpoint yourself and skip the Admin API. If you only have the company key, the Admin API looks up the rest.

If you have the service domain and company key

Use the ISN API

This is typical when you are integrating with your own ISN account, or when your user has given you both. You build the URL yourself and start calling: orders, clients, agents, scheduling, fees, and files.

ISN API reference →
If you only have the company key

Use the Admin API first

This is typical when you serve many ISN customers. Customers usually know their company key but not their domain. Make one Admin API call to get the customer's endpoint, then continue with the ISN API.

Admin API reference →

The Admin API uses an integration username and password. ISN issues these to you as the developer. They are different from a customer's access keys, which the customer creates. Email help@inspectionsupport.net to request a pair before you start building.

Guides

The reference lists every field of every operation. Each guide walks through one task step by step, in the order you should make the calls, and highlights only the fields you need.

For when you book inspections from your own system

How to schedule an order

Find the client, find an open time for an inspector, create the order as a draft, read it back to confirm, then schedule it. Eight API calls, two of which create or change data, plus three mistakes the API won't catch, so your code has to check for them.

Schedule an order →
For when you have a specific question

Questions and answers

Short answers with the call that does it, starting with how to set or update an order's report number.

Questions and answers →

Connect an AI assistant

Not every integration requires you to code. Connect an AI assistant such as Claude or ChatGPT to ISN, and it can look up orders, check availability, and book inspections for the signed-in user. No API keys are needed.

If you use Claude or ChatGPT

Connect it to your ISN

Read-only tools (clients, agents, orders, revenue) run without asking. The nine tools that create or change data always ask for the user's approval first.

To connect: add one URL, sign in with your ISN account, and approve access.

MCP server →

Get notified with webhooks

Instead of repeatedly asking ISN whether anything changed (also known as polling), register a URL. ISN sends an HTTP POST with a JSON body to that URL as soon as an order is created, scheduled, paid, completed, or rescheduled.

If you want to react to events, not poll for them

Register a webhook

Setup takes one page in ISN Settings: enter your URL and choose the order events you want. Every payload includes an event_id. Store it so you can ignore duplicate deliveries.

Webhooks →

Footprints

A footprint is a record that tells your integration an inspection is coming up for the authenticated user. Each upcoming inspection has one footprint. Read your footprints to find new work without repeatedly scanning the full order list.

Delete each footprint after you have processed it. A footprint stays in the queue until you delete it or until the customer's retention setting removes it, whichever happens first. If you don't delete footprints, you'll receive the same ones every time you check.

Worked example: you know the company key

  1. Build the endpoint from the service domain and company key.

    https://4isn.com/yourcompany/rest
  2. Ask for upcoming work, signing in with the user's access keys.

    curl -u "$ACCESS_KEY:$SECRET_ACCESS_KEY" \
      https://4isn.com/yourcompany/rest/orders/footprints
  3. Each footprint includes the ID of the order it points to. Use that ID to fetch details.

    GET /order/{id}
    GET /client/{id}
    GET /agent/{id}
  4. Delete the footprint so it doesn't appear again.

Worked example: you only have the company key

  1. Ask the user for their company key. They will know it; they often won't know their domain.

  2. Look up their endpoint with the Admin API, using your integration credentials.

    curl -u "$INTEGRATION_USER:$INTEGRATION_PASS" \
      "https://isnadmin.com/rest/isn/url?companykey=yourcompany"
  3. Read the url from the response. Check the status field in the response body, not the HTTP status code. An unknown company key still returns HTTP 200, and the status field shows the error.

  4. Save the URL for reuse so you don't call the Admin API every time. A customer's address rarely changes. If calls to a saved URL start failing, look it up again.

  5. Continue as in the first example, using the URL you were given.