Skip to main content
This guide explains how to use the Baselayer Portfolio Monitoring API to:
  1. Search for and verify a business
  2. Add that business to a monitored portfolio
  3. Retrieve ongoing updates and changes for that business
  4. Drill into field-level changes over time
For background on portfolios, groups, policies, and how to design monitoring, see Portfolio Monitoring: Basics.

Overview

The Portfolio Monitoring API lets you:
  • Search for a business by name and address
  • Create a portfolio item from that search result
  • Poll portfolio updates to see what has changed (registrations, officers, scores, watchlists, etc.)
  • Drill into changes for a specific portfolio item to see field-level diffs

High-Level Flow

  1. Search for a business POST /searches (synchronous search)
  2. Add the business to your portfolio POST /portfolio/items
  3. Fetch portfolio updates GET /portfolio/updates
  4. Paginate through updates Use the X-Next-Cursor response header
  5. Inspect changes for a specific item (optional) GET /portfolio/items/{item_id}/changes

Base URL & Authentication

Base URL

Use the appropriate environment base URL in your integration:
  • Production: https://api.baselayer.com
In the examples below, we refer to this as:
(e.g., {{baseUrl}} = https://api.baselayer.com)

Authentication

All requests are authenticated using an API key via the X-API-Key header:
In Postman, this is configured at the collection level using the API Key auth type with:
  • Key: X-API-Key
  • Value: {{apiKey}}
You can then define {{apiKey}} as an environment variable.
Use the Business Search endpoint to look up and verify a business by name and address.

Endpoint

Request Body Example

Sample Response (Truncated)

Key Fields to Capture

From this response you’ll typically store:
  • id – the search id (e.g. 4dc4fd78-b7de-4ee8-ade0-dbd455e48ca6)
  • business.id – the business id (e.g. 428ee4cc-39c0-4f8f-981a-95dbe5f8bbe3)
  • scores – KYB and risk scores at time of search
  • business details – structure, registrations, officers, addresses, watchlists, etc.
The business search must be completed and must have matched to a business profile to be able to add the search as a portfolio Item. You’ll use the search id in the next step to create a portfolio item.

Step 2 – Add the Business to Your Portfolio

Once you’ve verified the search result, add it to the portfolio for ongoing monitoring.

Endpoint

Request Body Example

Note: business_search_id should be the id field from the search response.

Sample Response

Key Fields to Capture

  • id – portfolio item id (e.g. 825667a6-2fe0-432d-ae59-edddab3ce068)
  • business_id – underlying Baselayer business id
  • scores – KYB & risk scores at the time the business was added to the portfolio
You’ll use the portfolio id later to request detailed changes for this item.

Step 3 – Fetch Portfolio Updates

Portfolio updates capture changes over time for items in your portfolio. These include:
  • Registration standing changes (e.g., Good → Suspended → Active)
  • KYB and risk score changes
  • Address and officer changes
  • Watchlist changes (OFAC, PEP, etc.)

Endpoint

Optional query parameters:
  • limit – maximum number of updates to return per page
  • cursor – pagination cursor (see the pagination section below)

Sample Response

Interpreting an Update

Each array element represents changes between two snapshots of a portfolio item:
  • item – basic portfolio item metadata
  • from_snapshot_id / to_snapshot_id – snapshot identifiers for diffing
  • notification_summaries – counts of changes per attribute category
  • notifications – human-readable change messages (good for dashboards, emails, etc.)
  • diff_url / notifications_url – API URLs to fetch structured diffs or notifications for this change window
You can use notification_summaries to quickly understand what kind of changes occurred, then drill into notifications or /portfolio/items/{item_id}/changes for details.

Step 4 – Pagination with X-Next-Cursor

The /portfolio/updates endpoint uses cursor-based pagination. When there are more updates available, the response headers include something like:
You can pass that value back to the endpoint as a cursor query parameter, for example:
  1. Call GET /portfolio/updates?limit=50
  2. Process all updates in the response
  3. If the X-Next-Cursor header is present, call the endpoint again with cursor=<value>
  4. Repeat until no X-Next-Cursor header is returned
This pattern works well in a scheduled job (for example, every few minutes) to ingest new portfolio changes.

Step 5 – Inspect Field-Level Changes for a Portfolio Item

If you need structured, field-level information about what changed for a particular item, use the item changes endpoint.

Endpoint

Where {item_id} is the portfolio item id (for example, 825667a6-2fe0-432d-ae59-edddab3ce068).

Sample Response

Interpreting the Change Objects

Each object represents a single change:
  • path – JSON path within the portfolio item document that changed
  • operation – "add", "remove", or "replace"
  • old_value – value before the change (or null for add)
  • new_value – value after the change (or null for remove)
  • changed_at – timestamp of the change
These are ideal for:
  • Internal audit logs
  • Driving your own notification or workflow system
  • Building detailed “change history” or “activity log” UIs

End-to-End User Flow Summary

A typical integration to monitor a business with Baselayer looks like this:
  1. Search and verify
    • Call POST /searches with the business name and address.
    • Review business, scores, and match quality fields.
  2. Create a portfolio item
    • Call POST /portfolio/items with business_search_id from step 1.
    • Store the returned portfolio id.
  3. Poll for updates
    • Periodically call GET /portfolio/updates?limit=50.
    • Use X-Next-Cursor to paginate through all updates.
    • Use notification_summaries and notifications to decide when to alert or trigger workflows.
  4. Drill into details as needed
    • Call GET /portfolio/items/{item_id}/changes for item-level diffs.
    • Optionally use diff_url and notifications_url from each update for more specialized views.
With this flow implemented, your system will have continuous visibility into changes to the businesses you monitor (scores, registrations, officers, addresses, and watchlists) via Baselayer’s Portfolio Monitoring API.