Back to portfolio

Integration API Developer Portal

A developer-experience sample for partner onboarding, authentication guidance, endpoint documentation, webhooks, and implementation readiness.

Quickstart

Ship a first read-only integration in one afternoon.

  1. 01

    Create sandbox client

    Generate a client ID, choose read scopes, and set a redirect URI.

  2. 02

    Request an access token

    Use OAuth 2.0 client credentials for server-to-server workflows.

  3. 03

    Fetch changed records

    Start with delta endpoints to avoid bulk exports and unnecessary load.

  4. 04

    Subscribe to events

    Use signed webhooks to keep downstream systems current after launch.

Implementation health

Launch checklist

  • Sandbox credentials issued
  • Read scopes approved
  • Webhook secret generated
  • Retry handling tested
  • Production cutover scheduled

Authentication

OAuth 2.0 with scoped access.

Bearer token

Token request

POST /oauth/token
Content-Type: application/json

{
  "grant_type": "client_credentials",
  "client_id": "sandbox_client_id",
  "client_secret": "sandbox_client_secret",
  "scope": "positions:read cashflows:read"
}

Token response

{
  "access_token": "eyJhbGciOi...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "positions:read cashflows:read"
}

Endpoints

Designed around common integration jobs.

GET

/v1/positions

Retrieve open positions with optional portfolio, industry, and updated-since filters.

GET

/v1/cashflows

Retrieve expected and posted cashflow events for downstream reconciliation.

POST

/v1/extracts

Create a governed export job when users need a larger point-in-time extract.

GET

/v1/events

Poll integration events when webhooks are not available in the target environment.

Webhooks

Event-driven sync without fragile polling.

{
  "event_id": "evt_9241",
  "event_type": "position.updated",
  "created_at": "2026-05-23T16:42:11Z",
  "data": {
    "position_id": "pos_8Q1",
    "issuer_id": "iss_AUR",
    "asset_id": "ast_AUR_TLB_2029",
    "changed_fields": ["par", "mark_price"]
  }
}

Each event is signed with an HMAC header and can be replayed for 72 hours.

Errors

Predictable failure modes.

401 Token expired or missing required scope.
409 Export already running for the requested dataset.
429 Request limit reached. Retry after the response header value.

Request Builder

Make docs usable before a developer writes code.

Generated request

Sample response