Skip to navigation

Introduction

Build on top of your merchant portfolio with the Modulate Partner API

The Modulate Partner API gives ISO partners programmatic access to every dimension of their merchant portfolio — pricing, processor profiles, transactions, statements, residuals, compliance, and AI-powered insights — through a single, consistent REST API.

What you can build

Portfolio dashboards

Display live merchant health, volume trends, and residual summaries directly inside your own platform.

Automated pricing tools

Pull current and historical TSYS pricing for any merchant to power competitive analysis or repricing workflows.

Statement delivery

List and download merchant statements programmatically — great for automated distribution or archiving.

Residual reporting

Access payout summaries, adjustments, withholds, and per-merchant residual breakdowns for any reporting period.

Processor profiles

Retrieve complete TSYS processor profile data — card network acceptance, banking details, interchange qualification, hierarchy, and more — for any merchant in your portfolio.

API basics

PropertyValue
Base URLhttps://getmodulate.dev
ProtocolHTTPS only
FormatJSON request and response bodies
AuthenticationX-Partner-API-Key header
VersioningURL-based (/api/partner/...)

Rate limits

Each API key may make 120 requests per rolling 60-second window unless we have raised its limit, shared across all endpoints. Limits are tracked per key, not per endpoint, so every key in your organization has its own budget. Exceeding the limit returns a 429 Too Many Requests response with a Retry-After header indicating when you can resume.

BudgetLimitApplies to
Standard120 / 60 s per keyEvery endpoint except GET /api/partner/rate-limit
Rate-limit status60 / 60 s per keyGET /api/partner/rate-limit only, instead of the standard budget
AI5 / 60 s per keyPOST .../explain endpoints, in addition to the standard budget

An AI call counts against both the standard and the AI budget, and is refused with 429 if either is exhausted.

Every response carries your position in the budget that call was metered against. On data endpoints and /me that is the standard budget, so X-RateLimit-Limit reads 120 (or your key’s raised limit); on /rate-limit itself the headers describe its own 60-request polling budget, while the response body reports your standard budget.

HeaderMeaning
X-RateLimit-LimitRequests allowed in the window
X-RateLimit-RemainingRequests still available
X-RateLimit-ResetUnix timestamp when the oldest request leaves the window

Checking before you spend

GET /api/partner/rate-limit reports the same window for every active key in your organization, with the key you authenticated with listed first. Use it to pre-flight a batch job, or to see the separate AI budget that applies to POST .../explain — the headers above only reveal that budget once you have already called an AI endpoint.

curl https://getmodulate.dev/api/partner/rate-limit \
-H "X-Partner-API-Key: YOUR_API_KEY"

Checking your status is metered against its own budget, so polling it does not consume the standard quota it reports.

If usage cannot be read, the response sets "source": "unavailable" and the used, remaining, and reset_at fields are null — that means unknown, not idle. Keep your own client-side counter rather than assuming a full budget.

Need higher rate limits? Contact it@flute.com to discuss your use case.

Support