Skip to navigation

Getting Started

Set up your environment, authenticate, and discover what each terminal supports.

The Run Developer Terminal API is a RESTful web service that uses JSON to encode data for transmission over HTTPS. Requests and responses are exchanged as JSON payloads over standard HTTPS methods (GET, POST, DELETE).

Before you begin

Work with Integration Delivery (integrations@runpayments.io) to order and provision a UAT device before attempting to authenticate or connect. Please submit all UAT requests to the same address.

Environment

VariableValueNotes
terminal_urlhttps://javelin.runpayments.ioBase URL for all Terminal API endpoints.
device_idHardware Serial Number (HSN)Provided by your Integration Delivery lead. Used as the {device_id} path parameter on every terminal endpoint.
Note the base paths

Terminal operations live under /api/terminal/…. The WebSocket token lives at /api/ws-token, and the email-receipt endpoint lives under the Payments API path /api/v1/send_receipt.

Authentication

Once your device is provisioned, use your access token — generated via the self-service credential generator or the key refresh endpoint (/api_keys/refresh) — to authenticate requests and connect with the device.

All Terminal API endpoints require a Bearer token, unless otherwise noted:

Authorization: Bearer <access_token>
Key rotation required

Authentication keys are rotational. The access token expires every hour, and the refresh token expires every 30 days. The recommended path is to create a scheduled job that rotates these keys automatically, so your integration does not fail a request due to an expired token.

CredentialLifetimeRenewal method
Access token1 hourSelf-service credential generator, or the key refresh endpoint
Refresh token30 daysSelf-service credential generator (re-authentication required after expiry)
WebSocket token60 seconds, single usePOST /api/ws-token — see Real-time updates (WebSocket)

ISV tokens

If your bearer token is an ISV token acting on behalf of a specific merchant, pass that merchant’s mid as a query parameter. Merchant-level tokens don’t need to pass mid.

If mid can’t be resolved to an authorized account, the request returns 400.

Rate limiting

All Terminal API endpoints share a per-credential rate limit. Exceeding it returns 429 Too Many Requests. This applies uniformly across every terminal endpoint.

Terminal capabilities

GET /api/terminal returns every terminal on the account with a capabilities object describing what that hardware supports. Check these flags before presenting signature capture or printing in your UI.

FlagWhat it gates
signatureWhether include_signature will actually capture a signature.
printerWhether print-receipt and print_receipt will work. Only Clover Flex and Clover Mini have printers; all other devices are permanently false.
msrMagnetic stripe (swipe).
emvChip (dip).
nfcContactless (tap).
pin_padPIN entry.
{
"device_id": "HSN123456",
"name": "Front Counter Clover Flex",
"capabilities": {
"signature": true,
"printer": true,
"msr": true,
"emv": true,
"nfc": true,
"pin_pad": false
}
}

Capabilities are set when a terminal is created and don’t change, so you can cache them per terminal. Re-fetch the list periodically only to pick up newly added terminals.