Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/benjipays-com:benjipays-com-emails-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Benji Pays Merchant Emails API
description: 'The Benji Pays Merchant API is a JSON over HTTPS API. All endpoints live under `/v2`. Errors follow RFC 7807 and are served as `application/problem+json`. This overview describes the cross-cutting behavior shared by every merchant endpoint. Endpoint-specific schemas live with each operation. ## Authentication
Merchant endpoints authenticate with an organization-scoped `x-api-key` header issued from the merchant app:
```
x-api-key:
```
The key is scoped to one organization and inherits the permissions of the login that created it. Failures return `401 Unauthorized` (missing/expired/invalid credentials) or `403 Forbidden` (insufficient mapping permission or organization lifecycle restrictions). ## Request and Correlation IDs
Two header pairs help with tracing:
| Header | Direction | Purpose |
| --- | --- | --- |
| `X-Request-ID` | request (optional) / response (always) | Unique identifier for one request. Generated as a UUID v4 when the client omits it. |
| `X-Correlation-ID` | request (optional) / response (always) | Identifier that flows across service boundaries for distributed tracing. Generated as a UUID v4 when omitted. |
Both IDs are echoed on success and included as `requestId` / `correlationId` extensions on `application/problem+json` error responses. These headers are auto-injected on every operation in this spec — do not redeclare them per route. ## Idempotency
POST, PATCH, and PUT endpoints accept an `Idempotency-Key` header to make retries safe. - Format: 1–255 characters, alphanumeric only (`[a-zA-Z0-9]+`). - Scope: keys are scoped per actor (no cross-tenant collisions). - Cache: the first response for a given key is cached for 24 hours. - Replay: a duplicate request with the same key and the same body returns the cached response with `X-Idempotency-Replayed: true` only after credentials were resolved by the global authenticate middleware (API key or Auth0 JWT signature check) before the idempotency cache lookup. - Conflict: same key with a different body returns `409 Conflict`. - In-flight: a second request with the same key while the first is still being processed returns `429 Too Many Requests` with `Retry-After` and problem `type` `https://api.benjipays.com/problems/idempotency-processing` (distinct from rate-limit `…/rate-limit-exceeded`). `Idempotency-Key` is auto-injected on every POST/PATCH/PUT operation in this spec — do not redeclare it per route. Routes that intentionally opt out set `x-bp-skip-idempotency: true`. The middleware fails open: if the cache layer is unavailable the request proceeds without idempotency protection. Most write routes treat the header as optional. Routes that require it set `x-bp-require-idempotency: true` and return `400 Bad Request` when it is missing — currently `POST /v2/transactions`, `POST /v2/transactions/prepayments`, and `POST /v2/transactions/{transactionId}/retry-accounting`. Those routes are also the exception to the fail-open rule above: when the cache layer is unavailable they return `503 Service Unavailable` with `Retry-After` and problem `type` `https://api.benjipays.com/problems/idempotency-unavailable`, and the request is not processed. Retry with the same key. The two charge routes (`POST /v2/transactions` and `POST /v2/transactions/prepayments`) also save the key on the charge. Recover a charge with `GET /v2/transactions?idempotencyKey={key}` (empty `data` when the key was never used). After the 24-hour replay window, the same key creates a new charge. ## Pagination
List endpoints use offset-based pagination with two query parameters:
| Parameter | Type | Default | Bounds |
| --- | --- | --- | --- |
| `limit` | integer | `20` | `1`–`1000` |
| `offset` | integer | `0` | `≥ 0` |
Some endpoints use different bounds (for example usage/billing and autoprocessing forecast). Check the per-operation schema.'
version: 2.0.0
contact:
name: Benji Pays API Support
email: benji@benjipays.com
servers:
- url: https://api.benjipays.com
description: Development server
security:
- ApiKeyAuth: []
tags:
- name: Emails
description: Sent emails for authenticated organizations
paths:
/v2/emails:
get:
summary: List sent emails for an Organization
description: Returns paginated sent emails for the organization associated with the authenticated API key. Matches the merchant-app email history, restricted to merchant-facing email types. Filter by customer, type, status, and sent-date range.
tags:
- Emails
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/RequestIdHeader'
- $ref: '#/components/parameters/CorrelationIdHeader'
- in: query
name: customerId
schema:
description: Filter to a single accounting customer ID.
type: string
maxLength: 200
description: Filter to a single accounting customer ID.
- in: query
name: type
schema:
type: string
enum:
- invoice
- receipt
- cardrequest
- emailreminder
- generalemail
- logininvite
- installment
- security
- nightlyresults
- benjiinvoice
- other
- invoicepaid
- emailverify
description: Filter by merchant-facing email type. Internal types cannot be queried.
- in: query
name: status
schema:
type: string
enum:
- sent
- queued
- error
description: Filter by delivery status (`sent`, `queued`, `error`).
- in: query
name: sentStart
schema:
description: 'Start of the sent-date range (inclusive). Two formats: `(1)` Calendar day `YYYY-MM-DD` (e.g. `2024-07-02`) — start of that day in UTC (`00:00:00.000Z`). `(2)` ISO-8601 UTC timestamp (e.g. `2024-07-02T07:00:00.000Z`) — exact UTC bound. Optional independently of `sentEnd`.'
examples:
- '2024-07-02'
- '2024-07-02T07:00:00.000Z'
type: string
maxLength: 40
description: 'Start of the sent-date range (inclusive). Two formats: `(1)` Calendar day `YYYY-MM-DD` (e.g. `2024-07-02`) — start of that day in UTC (`00:00:00.000Z`). `(2)` ISO-8601 UTC timestamp (e.g. `2024-07-02T07:00:00.000Z`) — exact UTC bound. Optional independently of `sentEnd`.'
- in: query
name: sentEnd
schema:
description: 'End of the sent-date range (inclusive). Two formats: `(1)` Calendar day `YYYY-MM-DD` (e.g. `2024-07-02`) — end of that day in UTC (`23:59:59.999Z`). `(2)` ISO-8601 UTC timestamp (e.g. `2024-07-03T06:59:59.999Z`) — exact UTC bound. Optional independently of `sentStart`.'
examples:
- '2024-07-02'
- '2024-07-03T06:59:59.999Z'
type: string
maxLength: 40
description: 'End of the sent-date range (inclusive). Two formats: `(1)` Calendar day `YYYY-MM-DD` (e.g. `2024-07-02`) — end of that day in UTC (`23:59:59.999Z`). `(2)` ISO-8601 UTC timestamp (e.g. `2024-07-03T06:59:59.999Z`) — exact UTC bound. Optional independently of `sentStart`.'
- in: query
name: search
schema:
description: Free-text search across email fields (recipient, subject, etc.).
type: string
maxLength: 200
description: Free-text search across email fields (recipient, subject, etc.).
- in: query
name: sort
schema:
description: Sort field (`sentDate`, `subject`, `status`, `type`).
type: string
enum:
- sentDate
- subject
- status
- type
description: Sort field (`sentDate`, `subject`, `status`, `type`).
- in: query
name: order
schema:
description: 'Sort direction. Accepted values: `asc`, `desc`. Defaults to `desc` when omitted.'
type: string
enum:
- asc
- desc
description: 'Sort direction. Accepted values: `asc`, `desc`. Defaults to `desc` when omitted.'
- in: query
name: limit
schema:
default: 20
type: integer
minimum: 1
maximum: 1000
- in: query
name: offset
schema:
default: 0
type: integer
minimum: 0
maximum: 9007199254740991
responses:
'200':
description: Paginated email list
content:
application/json:
schema:
$ref: '#/components/schemas/ListEmailsResponse'
'400':
description: Bad request — request validation failed (invalid query/path parameters; `type` `…/validation-error` with optional `errors[]`), and/or organization has no accounting integration configured.
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
'401':
description: Unauthorized
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
'403':
description: Forbidden — missing required OAuth scope (`organizations:emails:read`), insufficient live mapping permission on the API key owner (e.g. `companyAdmin`), and/or free trial ended without billing enabled. Scope, mapping, and billing state are independent gates; see response `detail`.
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
examples:
missingScope:
summary: Missing OAuth scope
value:
type: https://api.benjipays.com/problems/forbidden
title: Forbidden
status: 403
detail: 'Missing required scope: organizations:emails:read'
instance: /v2/emails
insufficientMappingPermission:
summary: Insufficient live mapping permission (API key owner)
value:
type: https://api.benjipays.com/problems/forbidden
title: Forbidden
status: 403
detail: Insufficient permission for this resource
instance: /v2/emails
freeTrialOverNotPaying:
summary: Free trial ended without billing
value:
type: https://api.benjipays.com/problems/forbidden
title: Forbidden
status: 403
detail: Free trial has ended and billing is not enabled
instance: /v2/emails
'404':
description: Organization not found
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
'429':
description: Too Many Requests
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
operationId: getV2Emails
x-operation-id-source: derived
/v2/emails/{emailId}:
get:
summary: Get a single sent email
description: Returns a single sent email by its `id` (from the list endpoint), including the body content and the full delivery event timeline. Scoped to the authenticated organization and restricted to merchant-facing email types.
tags:
- Emails
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/RequestIdHeader'
- $ref: '#/components/parameters/CorrelationIdHeader'
- in: path
name: emailId
schema:
type: string
pattern: ^[a-f\d]{24}$
description: The email identifier (`id` from the list endpoint).
example: 6a313b8505f3f5de0b551543
required: true
description: The email identifier (`id` from the list endpoint).
responses:
'200':
description: Email detail
content:
application/json:
schema:
$ref: '#/components/schemas/GetEmailResponse'
'400':
description: Bad request — request validation failed (invalid query/path parameters; `type` `…/validation-error` with optional `errors[]`), and/or organization has no accounting integration configured.
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
'401':
description: Unauthorized
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
'403':
description: Forbidden — missing required OAuth scope (`organizations:emails:read`), insufficient live mapping permission on the API key owner (e.g. `companyAdmin`), and/or free trial ended without billing enabled. Scope, mapping, and billing state are independent gates; see response `detail`.
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
examples:
missingScope:
summary: Missing OAuth scope
value:
type: https://api.benjipays.com/problems/forbidden
title: Forbidden
status: 403
detail: 'Missing required scope: organizations:emails:read'
instance: /v2/emails
insufficientMappingPermission:
summary: Insufficient live mapping permission (API key owner)
value:
type: https://api.benjipays.com/problems/forbidden
title: Forbidden
status: 403
detail: Insufficient permission for this resource
instance: /v2/emails
freeTrialOverNotPaying:
summary: Free trial ended without billing
value:
type: https://api.benjipays.com/problems/forbidden
title: Forbidden
status: 403
detail: Free trial has ended and billing is not enabled
instance: /v2/emails
'404':
description: Email not found
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
'429':
description: Too Many Requests
content:
application/problem+json:
schema:
type: object
properties:
type:
type: string
title:
type: string
status:
type: number
detail:
type: string
instance:
type: string
required:
- type
- title
- status
- detail
additionalProperties: false
description: RFC 7807 Problem Details error response
operationId: getV2EmailsByEmailId
x-operation-id-source: derived
components:
schemas:
GetEmailResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailDetail'
required:
- data
additionalProperties: false
description: Single email response
EmailEvent:
type: object
properties:
type:
type: string
description: Event type (e.g. Send, Delivery, Open, Bounce, Complaint)
timestamp:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
- type: 'null'
description: ISO-8601 UTC timestamp of the event
recipients:
description: Recipients for delivery events
type: array
items:
type: string
required:
- type
- timestamp
additionalProperties: false
description: A single delivery event
ListEmailsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailSummary'
pagination:
type: object
properties:
total:
type: number
description: Total matching emails across all pages
limit:
type: number
offset:
type: number
hasMore:
type: boolean
nextOffset:
anyOf:
- type: number
- type: 'null'
prevOffset:
anyOf:
- type: number
- type: 'null'
required:
- total
- limit
- offset
- hasMore
- nextOffset
- prevOffset
additionalProperties: false
required:
- data
- pagination
additionalProperties: false
description: Paginated email list response
EmailSummary:
type: object
properties:
id:
type: string
description: Email identifier (Mongo `_id`)
type:
anyOf:
- type: string
- type: 'null'
description: Email type (e.g. invoice, receipt, emailreminder)
status:
anyOf:
- type: string
- type: 'null'
description: Delivery status (sent, queued, error)
subject:
anyOf:
- type: string
- type: 'null'
from:
anyOf:
- type: string
- type: 'null'
to:
type: array
items:
type: string
cc:
type: array
items:
type: string
bcc:
type: array
items:
type: string
sentDate:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
- type: 'null'
description: ISO-8601 UTC timestamp the email was created/sent
opened:
type: boolean
lastOpened:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
- type: 'null'
description: ISO-8601 UTC timestamp of the last non-bot open
bounced:
type: boolean
delivered:
type: boolean
customerId:
anyOf:
- type: string
- type: 'null'
description: Accounting customer ID
invoiceIds:
type: array
items:
type: string
description: Associated accounting invoice IDs
sentBy:
anyOf:
- type: string
- type: 'null'
description: Display name of the user who sent the email
reminderRule:
$ref: '#/components/schemas/EmailReminderRule'
hasAttachments:
type: boolean
required:
- id
- type
- status
- subject
- from
- to
- cc
- bcc
- sentDate
- opened
- lastOpened
- bounced
- delivered
- customerId
- invoiceIds
- sentBy
- reminderRule
- hasAttachments
additionalProperties: false
description: A sent email (summary)
EmailReminderRule:
anyOf:
- type: object
properties:
displayName:
anyOf:
- type: string
- type: 'null'
description: Friendly reminder rule name, resolved from email-reminder settings
required:
- displayName
additionalProperties: false
- type: 'null'
description: Reminder rule descriptor for reminder emails; null for non-reminder emails
EmailDetail:
type: object
properties:
id:
type: string
description: Email identifier (Mongo `_id`)
type:
anyOf:
- type: string
- type: 'null'
description: Email type (e.g. invoice, receipt, emailreminder)
status:
anyOf:
- type: string
- type: 'null'
description: Delivery status (sent, queued, error)
subject:
anyOf:
- type: string
- type: 'null'
from:
anyOf:
- type: string
- type: 'null'
to:
type: array
items:
type: string
cc:
type: array
items:
type: string
bcc:
type: array
items:
type: string
sentDate:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
- type: 'null'
description: ISO-8601 UTC timestamp the email was created/sent
opened:
type: boolean
lastOpened:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
- type: 'null'
description: ISO-8601 UTC timestamp of the last non-bot open
bounced:
type: boolean
delivered:
type: boolean
customerId:
anyOf:
- type: string
- type: 'null'
description: Accounting customer ID
invoiceIds:
type: array
items:
type: string
description: Associated accounting invoice IDs
sentBy:
anyOf:
- type: string
- type: 'null'
description: Display name of the user who sent the email
reminderRule:
$ref: '#/components/schemas/EmailReminderRule'
hasAttachments:
type: boolean
html:
anyOf:
- type: string
- type: 'null'
description: HTML body of the email
text:
anyOf:
- type: string
- type: 'null'
description: Plain-text body of the email
events:
type: array
items:
$ref: '#/components/schemas/EmailEvent'
description: Full delivery event timeline
required:
- id
- type
- status
- subject
- from
- to
- cc
- bcc
- sentDate
- opened
- lastOpened
- bounced
- delivered
- customerId
- invoiceIds
- sentBy
- reminderRule
- hasAttachments
- html
- text
- events
additionalProperties: false
description: A sent email (detail, with body and event timeline)
parameters:
RequestIdHeader:
name: X-Request-ID
in: header
required: false
description: Optional client-supplied unique ID for one request. The server generates a UUID v4 if omitted and always echoes the value in the response.
schema:
type: string
format: uuid
CorrelationIdHeader:
name: X-Correlation-ID
in: header
required: false
description: Optional ID that flows across service boundaries for distributed tracing. The server generates a UUID v4 if omitted and always echoes the value in the response.
schema:
type: string
format: uuid
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Organization-scoped API key. Send it in the x-api-key header. Available on organization endpoints only.
x-speakeasy-retries:
strategy: backoff
backoff:
initialInterval: 500
maxInterval: 60000
maxElapsedTime: 3600000
exponent: 1.5
statusCodes:
- 5XX
retryConnectionErrors: true
x-provenance:
method: searched
source: https://developer.benjipays.com/reference
harvested: '2026-11-02'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://developer.benjipays.com/reference/delete_v2-customers-customerid-alert.md
- https://developer.benjipays.com/reference/delete_v2-customers-customerid-notes-noteid.md
- https://developer.benjipays.com/reference/get_v2-accounting-accounts.md
- https://developer.benjipays.com/reference/get_v2-autoprocessing-forecast.md
- https://developer.benjipays.com/reference/get_v2-customers-customerid-notes-noteid.md
- https://developer.benjipays.com/reference/get_v2-customers-customerid-notes.md
- https://developer.benjipays.com/reference/get_v2-customers-customerid.md
- https://developer.benjipays.com/reference/get_v2-customers.md
- https://developer.benjipays.com/reference/get_v2-emails-emailid.md
- https://developer.benjipays.com/reference/get_v2-emails.md
- https://developer.benjipays.com/reference/get_v2-gateways-capabilities.md
- https://developer.benjipays.com/reference/get_v2-gateways.md
- https://developer.benjipays.com/reference/get_v2-invoices-invoiceid-pdf.md
- https://developer.benjipays.com/reference/get_v2-invoices-invoiceid.md
- https://developer.benjipays.com/reference/get_v2-invoices.md
- https://developer.benjipays.com/reference/get_v2-notes-categories.md
- https://developer.benjipays.com/reference/get_v2-notes-statuses.md
- https://developer.benjipays.com/reference/get_v2-organization.md
- https://developer.benjipays.com/reference/get_v2-payment-method-requests-paymentmethodrequestid.md
- https://developer.benjipays.com/reference/get_v2-payment-method-requests.md
- https://developer.benjipays.com/reference/get_v2-payment-methods-id.md
- https://developer.benjipays.com/reference/get_v2-payment-methods.md
- https://developer.benjipays.com/reference/get_v2-settings.md
- https://developer.benjipays.com/reference/get_v2-transactions-transactionid-receipt.md
- https://developer.benjipays.com/reference/get_v2-transactions.md
- https://developer.benjipays.com/reference/get_v2-users.md
- https://developer.benjipays.com/reference/get_v2-whoami-1.md
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://artifacts.apis.io/benjipays-com/openapi/benjipays-com-emails-api-openapi.yml