Jeeves Public API (1.0.0)

Introduction

The Jeeves API is built around REST principles. Our API accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes.

Authentication

The Jeeves API uses mTLS and OAuth 2.0 to authenticate requests. You can request your mTLS certificate and OAuth 2.0 credentials in both sandbox and production environments by reaching out to our support team.

All API requests will only work over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Errors

The Jeeves API uses standard HTTP response codes to indicate the success or failure of an API request. In general: codes in the 2XX range indicate success; codes in the 4XX range indicate an error in the information provided; codes in the 5XX range indicate an internal error with Jeeves application/server.

Currently, the Jeeves API has the following HTTP responses:

CodeResponseDescription
200OkObject was returned as expected.
201OkObject was created as expected.
204OkNo return, but request was processed as expected.
400Bad requestAt least one argument is wrong or missing.
401UnauthorizedNo valid API token provided.
403ForbiddenThe API token doesn't have permission to perform the request.
404Not foundThe requested resource doesn't exist.
500Server errorAn internal error at Jeeves.
Download OpenAPI description
Languages
Servers
https://public-sandbox.tryjeeves.com/
https://public-api.jeev.es/

Boletos

The Boleto API supports the full boleto lifecycle, enabling clients to create, retrieve, extend, and cancel boletos via secure integration. It also supports Bolepix, which adds a Pix QR code to the boleto for instant settlement through Pix rails. For boletos paid via barcode or digitable line, the API provides an early payment notice before final settlement - offering visibility of the payment up to one day in advance, with guaranteed settlement. For boletos paid via Pix (via Bolepix), the boleto is marked as paid directly, as settlement is immediate.

Operations

Cards

The Card API supports the full card lifecycle, enabling clients to create, retrieve, and update cards via secure integration. Use POST /v1/cards/transactions with the source field to query card or travel transactions in a single endpoint.

Operations

Transactions

The Transactions API enables clients to retrieve card and payment transactions via secure integration. Supports filtering by date range and pagination for efficient data retrieval.

Operations

Travel

The Travel API enables clients to retrieve transactions from virtual travel cards and update booking details via secure integration.

Operations

Webhooks

The Webhooks API provides access to webhook subscription management and event tracking, enabling you to receive real-time HTTP notifications the moment a card transaction is approved, declined, settled, or fails.

Operations

Create subscription

Request

Creates a new webhook subscription. Returns the signing secret in plaintext once — store it immediately, it is not shown again.

Bodyapplication/jsonrequired

WebhookSubscriptionCreateDto

urlstring<= 2048 charactersrequired

HTTPS URL where events will be delivered. Max 2048 chars.

Example: "https://your-app.com/webhooks/jeeves"
eventTypesArray of stringsrequired

At least one event type to subscribe to.

Items Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
developerEmailstring<= 1024 charactersrequired

Comma-separated list of emails (max 5) for alerts. Max 1024 chars.

Example: "dev1@example.com,dev2@example.com"
descriptionstring<= 255 characters

Human-readable label for this subscription. Max 255 chars.

Example: "Production webhook for card transactions"
timeoutMsinteger[ 1000 .. 30000 ]

HTTP delivery timeout in ms. Default 10000, min 1000, max 30000.

Default 10000
Example: 10000
curl -i -X POST \
  https://public-sandbox.tryjeeves.com/v1/webhooks/subscriptions \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://your-app.com/webhooks/jeeves",
    "eventTypes": [
      "transaction.auth.approved"
    ],
    "developerEmail": "dev1@example.com,dev2@example.com",
    "description": "Production webhook for card transactions",
    "timeoutMs": 10000
  }'

Responses

Webhook subscription created. The signing secret is returned once — store it immediately.

Bodyapplication/json
idstring(uuid)required

Subscription identifier.

Example: "123e4567-e89b-12d3-a456-426614174000"
urlstringrequired

HTTPS URL where events will be delivered.

Example: "https://your-app.com/webhooks/jeeves"
eventTypesArray of stringsrequired

List of subscribed event types.

Items Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
developerEmailstringrequired

Comma-separated list of alert email addresses.

Example: "dev1@example.com,dev2@example.com"
descriptionstring or null

Human-readable label for this subscription.

Example: "Production webhook for card transactions"
timeoutMsinteger[ 1000 .. 30000 ]

HTTP delivery timeout in ms.

Default 10000
Example: 10000
statusstringrequired

Subscription status.

Enum"active""paused""disabled"
Example: "active"
versionstringrequired

Payload schema version.

Example: "v1"
createdAtstring(date-time)required

ISO 8601 creation timestamp.

Example: "2026-04-15T10:35:00Z"
updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Example: "2026-04-15T10:35:00Z"
secretstringrequired

Signing secret (whsec_…). Only returned on creation — store immediately.

Example: "whsec_a1b2c3d4e5f6..."
Response
application/json
{ "id": "123e4567-e89b-12d3-a456-426614174000", "url": "https://your-app.com/webhooks/jeeves", "eventTypes": [ "transaction.auth.approved" ], "developerEmail": "dev1@example.com,dev2@example.com", "description": "Production webhook for card transactions", "timeoutMs": 10000, "status": "active", "version": "v1", "createdAt": "2026-04-15T10:35:00Z", "updatedAt": "2026-04-15T10:35:00Z", "secret": "whsec_a1b2c3d4e5f6..." }

List subscriptions

Request

Returns all webhook subscriptions for the credential owner's company.

curl -i -X GET \
  https://public-sandbox.tryjeeves.com/v1/webhooks/subscriptions \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

List of all webhook subscriptions for the credential owner's company. The secret field is masked.

Bodyapplication/jsonArray [
idstring(uuid)required

Subscription identifier.

Example: "123e4567-e89b-12d3-a456-426614174000"
urlstringrequired

HTTPS URL where events will be delivered.

Example: "https://your-app.com/webhooks/jeeves"
eventTypesArray of stringsrequired

List of subscribed event types.

Items Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
developerEmailstringrequired

Comma-separated list of alert email addresses.

Example: "dev1@example.com,dev2@example.com"
descriptionstring or null

Human-readable label for this subscription.

Example: "Production webhook for card transactions"
timeoutMsinteger[ 1000 .. 30000 ]

HTTP delivery timeout in ms.

Default 10000
Example: 10000
statusstringrequired

Subscription status.

Enum"active""paused""disabled"
Example: "active"
versionstringrequired

Payload schema version.

Example: "v1"
createdAtstring(date-time)required

ISO 8601 creation timestamp.

Example: "2026-04-15T10:35:00Z"
updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Example: "2026-04-15T10:35:00Z"
]
Response
application/json
[ { "id": "123e4567-e89b-12d3-a456-426614174000", "url": "https://your-app.com/webhooks/jeeves", "eventTypes": [], "developerEmail": "dev1@example.com,dev2@example.com", "description": "Production webhook for card transactions", "timeoutMs": 10000, "status": "active", "version": "v1", "createdAt": "2026-04-15T10:35:00Z", "updatedAt": "2026-04-15T10:35:00Z" } ]

Get subscription

Request

Returns the details of a single webhook subscription.

Path
idstring[^\/#\?]+?required

Subscription identifier (UUID).

curl -i -X GET \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/subscriptions/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Webhook subscription details. The secret field is masked.

Bodyapplication/json
idstring(uuid)required

Subscription identifier.

Example: "123e4567-e89b-12d3-a456-426614174000"
urlstringrequired

HTTPS URL where events will be delivered.

Example: "https://your-app.com/webhooks/jeeves"
eventTypesArray of stringsrequired

List of subscribed event types.

Items Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
developerEmailstringrequired

Comma-separated list of alert email addresses.

Example: "dev1@example.com,dev2@example.com"
descriptionstring or null

Human-readable label for this subscription.

Example: "Production webhook for card transactions"
timeoutMsinteger[ 1000 .. 30000 ]

HTTP delivery timeout in ms.

Default 10000
Example: 10000
statusstringrequired

Subscription status.

Enum"active""paused""disabled"
Example: "active"
versionstringrequired

Payload schema version.

Example: "v1"
createdAtstring(date-time)required

ISO 8601 creation timestamp.

Example: "2026-04-15T10:35:00Z"
updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Example: "2026-04-15T10:35:00Z"
Response
application/json
{ "id": "123e4567-e89b-12d3-a456-426614174000", "url": "https://your-app.com/webhooks/jeeves", "eventTypes": [ "transaction.auth.approved" ], "developerEmail": "dev1@example.com,dev2@example.com", "description": "Production webhook for card transactions", "timeoutMs": 10000, "status": "active", "version": "v1", "createdAt": "2026-04-15T10:35:00Z", "updatedAt": "2026-04-15T10:35:00Z" }

Update subscription

Request

Updates a webhook subscription. Only fields you include are changed.

Path
idstring[^\/#\?]+?required

Subscription identifier (UUID).

Bodyapplication/jsonrequired

WebhookSubscriptionUpdateDto

urlstring<= 2048 characters

New HTTPS delivery URL. Max 2048 chars.

Example: "https://your-app.com/webhooks/jeeves"
eventTypesArray of strings

Replaces the full list of subscribed event types (min 1).

Items Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
developerEmailstring<= 1024 characters

Comma-separated alert emails (max 5). Max 1024 chars.

Example: "dev1@example.com"
descriptionstring<= 255 characters

Human-readable label. Max 255 chars.

Example: "Production webhook for card transactions"
timeoutMsinteger[ 1000 .. 30000 ]

Delivery timeout in ms (1000–30000).

Example: 10000
statusstring

Use to re-enable after circuit breaker.

Enum"active""paused""disabled"
Example: "active"
curl -i -X PATCH \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/subscriptions/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://your-app.com/webhooks/jeeves",
    "eventTypes": [
      "transaction.auth.approved"
    ],
    "developerEmail": "dev1@example.com",
    "description": "Production webhook for card transactions",
    "timeoutMs": 10000,
    "status": "active"
  }'

Responses

Updated webhook subscription details.

Bodyapplication/json
idstring(uuid)required

Subscription identifier.

Example: "123e4567-e89b-12d3-a456-426614174000"
urlstringrequired

HTTPS URL where events will be delivered.

Example: "https://your-app.com/webhooks/jeeves"
eventTypesArray of stringsrequired

List of subscribed event types.

Items Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
developerEmailstringrequired

Comma-separated list of alert email addresses.

Example: "dev1@example.com,dev2@example.com"
descriptionstring or null

Human-readable label for this subscription.

Example: "Production webhook for card transactions"
timeoutMsinteger[ 1000 .. 30000 ]

HTTP delivery timeout in ms.

Default 10000
Example: 10000
statusstringrequired

Subscription status.

Enum"active""paused""disabled"
Example: "active"
versionstringrequired

Payload schema version.

Example: "v1"
createdAtstring(date-time)required

ISO 8601 creation timestamp.

Example: "2026-04-15T10:35:00Z"
updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Example: "2026-04-15T10:35:00Z"
Response
application/json
{ "id": "123e4567-e89b-12d3-a456-426614174000", "url": "https://your-app.com/webhooks/jeeves", "eventTypes": [ "transaction.auth.approved" ], "developerEmail": "dev1@example.com,dev2@example.com", "description": "Production webhook for card transactions", "timeoutMs": 10000, "status": "active", "version": "v1", "createdAt": "2026-04-15T10:35:00Z", "updatedAt": "2026-04-15T10:35:00Z" }

Delete subscription

Request

Soft-deletes a webhook subscription. No further events will be delivered to this endpoint.

Path
idstring[^\/#\?]+?required

Subscription identifier (UUID).

curl -i -X DELETE \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/subscriptions/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Subscription deleted.

Bodyapplication/json
Response
application/json
null

Rotate secret

Request

Issues a new signing secret. The previous secret remains valid for 24 hours for a zero-downtime rollover.

Path
idstring[^\/#\?]+?required

Subscription identifier (UUID).

curl -i -X POST \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/subscriptions/{id}/rotate-secret' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

New signing secret issued. The previous secret remains valid for 24 hours.

Bodyapplication/json
idstring(uuid)required

Subscription identifier.

Example: "123e4567-e89b-12d3-a456-426614174000"
urlstringrequired

HTTPS URL where events will be delivered.

Example: "https://your-app.com/webhooks/jeeves"
eventTypesArray of stringsrequired

List of subscribed event types.

Items Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
developerEmailstringrequired

Comma-separated list of alert email addresses.

Example: "dev1@example.com,dev2@example.com"
descriptionstring or null

Human-readable label for this subscription.

Example: "Production webhook for card transactions"
timeoutMsinteger[ 1000 .. 30000 ]

HTTP delivery timeout in ms.

Default 10000
Example: 10000
statusstringrequired

Subscription status.

Enum"active""paused""disabled"
Example: "active"
versionstringrequired

Payload schema version.

Example: "v1"
createdAtstring(date-time)required

ISO 8601 creation timestamp.

Example: "2026-04-15T10:35:00Z"
updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Example: "2026-04-15T10:35:00Z"
secretstringrequired

New plaintext HMAC signing secret (whsec_…). Store immediately.

Example: "whsec_a1b2c3d4e5f6..."
previousSecretExpiresAtstring(date-time)required

When the old secret stops being valid for signature verification (24-hour grace window).

Example: "2026-04-16T10:35:00Z"
Response
application/json
{ "id": "123e4567-e89b-12d3-a456-426614174000", "url": "https://your-app.com/webhooks/jeeves", "eventTypes": [ "transaction.auth.approved" ], "developerEmail": "dev1@example.com,dev2@example.com", "description": "Production webhook for card transactions", "timeoutMs": 10000, "status": "active", "version": "v1", "createdAt": "2026-04-15T10:35:00Z", "updatedAt": "2026-04-15T10:35:00Z", "secret": "whsec_a1b2c3d4e5f6...", "previousSecretExpiresAt": "2026-04-16T10:35:00Z" }

Send test delivery

Request

Posts a signed sample payload to your endpoint and returns the HTTP response inline. Not recorded in events or deliveries.

Path
idstring[^\/#\?]+?required

Subscription identifier (UUID).

curl -i -X POST \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/subscriptions/{id}/test' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Test delivery result with HTTP status and latency from your endpoint.

Bodyapplication/json
resultstringrequired

Test delivery result.

Enum"success""failed"
Example: "success"
httpStatusCodeinteger or null

HTTP status returned by your endpoint (if reachable).

Example: 200
latencyMsinteger or null

Round-trip latency in ms.

Example: 150
errorMessagestring or null

Present on failure — describes the error.

Response
application/json
{ "result": "success", "httpStatusCode": 200, "latencyMs": 150, "errorMessage": "string" }

List events

Request

Returns a paginated list of webhook events, filterable by type and status.

Query
pagenumber>= 1

Page number to retrieve.

Default 1
Example: page=1
pageSizenumber[ 1 .. 500 ]

Number of events returned per page.

Default 20
Example: pageSize=20
eventTypestring

Filter by event type.

Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
statusstring

Filter by delivery status.

Enum"pending""delivering""delivered""partially_delivered""failed"
curl -i -X GET \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/events?eventType=transaction.auth.approved&page=1&pageSize=20&status=pending' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Paginated list of webhook events.

Bodyapplication/json
countnumberrequired

Total number of events.

Example: 100
rowsArray of objects(WebhookEventDto)required
rows[].​idstring(uuid)required

Event identifier.

Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
rows[].​eventTypestringrequired

Event type.

Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
Example: "transaction.auth.approved"
rows[].​eventVersionstringrequired

Payload schema version.

Example: "v1"
rows[].​payloadobject

Event payload.

rows[].​idempotencyKeystring(uuid)

Idempotency key for deduplication.

rows[].​statusstringrequired

Event delivery status.

Enum"pending""delivering""delivered""partially_delivered""failed"
Example: "delivered"
rows[].​occurredAtstring(date-time)required

When the event occurred.

Example: "2026-04-20T10:00:00Z"
rows[].​deliveredAtstring or null(date-time)

When the event was delivered.

Example: "2026-04-20T10:00:01Z"
rows[].​createdAtstring(date-time)required

ISO 8601 creation timestamp.

Example: "2026-04-20T10:00:00Z"
rows[].​updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Example: "2026-04-20T10:00:01Z"
Response
application/json
{ "count": 100, "rows": [ {} ] }

Get event

Request

Returns event details with the latest delivery outcome per subscription.

Path
idstring[^\/#\?]+?required

Event identifier (UUID).

curl -i -X GET \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/events/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Event details with the latest delivery outcome per subscription.

Bodyapplication/json
idstring(uuid)required

Event identifier.

Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
eventTypestringrequired

Event type.

Enum"transaction.auth.approved""transaction.auth.declined""transaction.failed""transaction.settled"
Example: "transaction.auth.approved"
eventVersionstringrequired

Payload schema version.

Example: "v1"
payloadobject

Event payload.

idempotencyKeystring(uuid)

Idempotency key for deduplication.

statusstringrequired

Event delivery status.

Enum"pending""delivering""delivered""partially_delivered""failed"
Example: "delivered"
occurredAtstring(date-time)required

When the event occurred.

Example: "2026-04-20T10:00:00Z"
deliveredAtstring or null(date-time)

When the event was delivered.

Example: "2026-04-20T10:00:01Z"
createdAtstring(date-time)required

ISO 8601 creation timestamp.

Example: "2026-04-20T10:00:00Z"
updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Example: "2026-04-20T10:00:01Z"
Response
application/json
{ "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "eventType": "transaction.auth.approved", "eventVersion": "v1", "payload": {}, "idempotencyKey": "0c14c6a6-6f50-4d1e-b0c4-b46ff43ba6a1", "status": "delivered", "occurredAt": "2026-04-20T10:00:00Z", "deliveredAt": "2026-04-20T10:00:01Z", "createdAt": "2026-04-20T10:00:00Z", "updatedAt": "2026-04-20T10:00:01Z" }

List deliveries

Request

Lists the latest delivery attempt per subscription for a given event.

Path
idstring[^\/#\?]+?required

Event identifier (UUID).

curl -i -X GET \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/events/{id}/deliveries' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

List of delivery attempts for the given event.

Bodyapplication/json
rowsArray of objects(WebhookDeliveryDto)required
rows[].​idstring(uuid)required

Delivery identifier.

rows[].​transactionEventIdstring(uuid)required

Parent event ID.

rows[].​subscriptionIdstring(uuid)required

Target subscription ID.

rows[].​statusstringrequired

Delivery status.

Enum"pending""queued""success""failed""pending_retry""exhausted"
Example: "success"
rows[].​triggerTypestringrequired

How the delivery was triggered.

Enum"automatic""automatic_retry""manual"
Example: "automatic"
rows[].​httpStatusCodeinteger or null

HTTP status returned by your endpoint.

Example: 200
rows[].​responseBodystring or null

First 1 KB of your endpoint's response body.

rows[].​errorMessagestring or null

Error description if delivery failed.

rows[].​errorTypestring or null

Error origin.

Enum"internal""external"
rows[].​attemptNumberintegerrequired

Delivery attempt count (1-based).

Example: 1
rows[].​nextRetryAtstring or null(date-time)

When the next retry will fire (if scheduled).

rows[].​deliveredAtstring or null(date-time)

When delivery succeeded.

rows[].​latencyMsinteger or null

Round-trip latency in ms.

Example: 150
rows[].​createdAtstring(date-time)required

ISO 8601 creation timestamp.

rows[].​updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Response
application/json
{ "rows": [ {} ] }

Retry event

Request

Resends this event to all active subscriptions. Skips disabled subscriptions. Fails if any delivery is still in progress. Manual retries are single-shot.

Path
idstring[^\/#\?]+?required

Event identifier (UUID).

curl -i -X POST \
  'https://public-sandbox.tryjeeves.com/v1/webhooks/events/{id}/retry' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Array of newly-created delivery rows triggered by this retry.

Bodyapplication/json
rowsArray of objects(WebhookDeliveryDto)required
rows[].​idstring(uuid)required

Delivery identifier.

rows[].​transactionEventIdstring(uuid)required

Parent event ID.

rows[].​subscriptionIdstring(uuid)required

Target subscription ID.

rows[].​statusstringrequired

Delivery status.

Enum"pending""queued""success""failed""pending_retry""exhausted"
Example: "success"
rows[].​triggerTypestringrequired

How the delivery was triggered.

Enum"automatic""automatic_retry""manual"
Example: "automatic"
rows[].​httpStatusCodeinteger or null

HTTP status returned by your endpoint.

Example: 200
rows[].​responseBodystring or null

First 1 KB of your endpoint's response body.

rows[].​errorMessagestring or null

Error description if delivery failed.

rows[].​errorTypestring or null

Error origin.

Enum"internal""external"
rows[].​attemptNumberintegerrequired

Delivery attempt count (1-based).

Example: 1
rows[].​nextRetryAtstring or null(date-time)

When the next retry will fire (if scheduled).

rows[].​deliveredAtstring or null(date-time)

When delivery succeeded.

rows[].​latencyMsinteger or null

Round-trip latency in ms.

Example: 150
rows[].​createdAtstring(date-time)required

ISO 8601 creation timestamp.

rows[].​updatedAtstring(date-time)required

ISO 8601 last-updated timestamp.

Response
application/json
{ "rows": [ {} ] }