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/orsunpay-com:orsunpay-com-cashier-sessions-merchant-s2s-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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:
contact:
name: OrsunPay
description: Server-to-server merchant payments. Money is always a decimal string in major units.
title: OrsunPay Merchant Cashier sessions (merchant S2S) API
version: '1.0'
servers: []
tags:
- name: Cashier sessions (merchant S2S)
paths:
/v1/cashier/sessions:
post:
operationId: createCashierSession
parameters:
- in: header
name: Idempotency-Key
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CashierCreateSessionDto'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CashierGrantResponseDto'
description: ''
'429':
content:
application/json:
example:
error: RATE_LIMITED
errorCode: RATE_LIMITED
message: Too many requests. Retry after the indicated delay.
status: false
statusCode: 429
schema:
$ref: '#/components/schemas/ApiErrorResponseDto'
description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
headers:
RateLimit:
description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
schema:
example: '"merchant";r=37;t=4'
type: string
RateLimit-Policy:
description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
schema:
example: '"merchant";q=100;w=5'
type: string
Retry-After:
description: Minimum delay in whole seconds before retrying.
schema:
example: 1
minimum: 1
type: integer
'503':
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
- $ref: '#/components/schemas/ApiErrorResponseDto'
description: ''
security:
- X-API-Key: []
summary: Authorize a player cashier from the merchant backend
tags:
- Cashier sessions (merchant S2S)
/v1/cashier/sessions/{id}/access-grants:
post:
operationId: mintCashierAccessGrant
parameters:
- in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CashierMintGrantDto'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CashierGrantResponseDto'
description: ''
'429':
content:
application/json:
example:
error: RATE_LIMITED
errorCode: RATE_LIMITED
message: Too many requests. Retry after the indicated delay.
status: false
statusCode: 429
schema:
$ref: '#/components/schemas/ApiErrorResponseDto'
description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
headers:
RateLimit:
description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
schema:
example: '"merchant";r=37;t=4'
type: string
RateLimit-Policy:
description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
schema:
example: '"merchant";q=100;w=5'
type: string
Retry-After:
description: Minimum delay in whole seconds before retrying.
schema:
example: 1
minimum: 1
type: integer
'503':
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
- $ref: '#/components/schemas/ApiErrorResponseDto'
description: ''
security:
- X-API-Key: []
summary: Renew player access for the same bound instance
tags:
- Cashier sessions (merchant S2S)
/v1/cashier/sessions/{id}/revoke:
post:
operationId: revokeCashierSession
parameters:
- in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CashierRevokeSessionDto'
required: true
responses:
'200':
description: ''
'429':
content:
application/json:
example:
error: RATE_LIMITED
errorCode: RATE_LIMITED
message: Too many requests. Retry after the indicated delay.
status: false
statusCode: 429
schema:
$ref: '#/components/schemas/ApiErrorResponseDto'
description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
headers:
RateLimit:
description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
schema:
example: '"merchant";r=37;t=4'
type: string
RateLimit-Policy:
description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
schema:
example: '"merchant";q=100;w=5'
type: string
Retry-After:
description: Minimum delay in whole seconds before retrying.
schema:
example: 1
minimum: 1
type: integer
'503':
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
- $ref: '#/components/schemas/ApiErrorResponseDto'
description: ''
security:
- X-API-Key: []
summary: Revoke this player cashier immediately
tags:
- Cashier sessions (merchant S2S)
/v1/cashier/wallet/receipts:
post:
operationId: CashierWalletReceiptController_receipt
parameters: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CashierWalletReceiptDto'
required: true
responses:
'200':
description: ''
'429':
content:
application/json:
example:
error: RATE_LIMITED
errorCode: RATE_LIMITED
message: Too many requests. Retry after the indicated delay.
status: false
statusCode: 429
schema:
$ref: '#/components/schemas/ApiErrorResponseDto'
description: 'RATE_LIMITED: IP, merchant or failed-auth quota exhausted, or auth-in-flight concurrency pressure (Retry-After: 1). Wait Retry-After seconds and retry with the same Idempotency-Key.'
headers:
RateLimit:
description: Remaining requests (r) and seconds to reset/full refill (t), per evaluated policy. Absent when disabled; merchant quota is omitted during Redis outages, while IP/auth protection uses replica memory.
schema:
example: '"merchant";r=37;t=4'
type: string
RateLimit-Policy:
description: Evaluated policies (draft-ietf-httpapi-ratelimit-headers-11). q is burst quota; w is the full refill window in seconds.
schema:
example: '"merchant";q=100;w=5'
type: string
Retry-After:
description: Minimum delay in whole seconds before retrying.
schema:
example: 1
minimum: 1
type: integer
'503':
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/AuthenticationUnavailableResponseDto'
- $ref: '#/components/schemas/ApiErrorResponseDto'
description: ''
security:
- X-API-Key: []
summary: Acknowledge a wallet effect
tags:
- Cashier sessions (merchant S2S)
components:
schemas:
CashierWalletReceiptDto:
properties:
amount:
pattern: ^(0|[1-9]\d{0,19})(\.\d{1,18})?$
type: string
currency:
type: string
effectId:
type: string
eventId:
type: string
kind:
enum:
- credit
- capture
- release
type: string
livemode:
type: boolean
operationId:
type: string
orderId:
type: string
playerId:
maxLength: 100
type: string
revision:
type: string
simulation:
description: Exact stored effect simulation flag. Simulation is test-mode only and never activates real wallet money.
type: boolean
transactionId:
description: Real engine transaction; omission is allowed only for pre-dispatch release.
type: string
walletOperationId:
type: string
required:
- effectId
- eventId
- walletOperationId
- operationId
- orderId
- playerId
- livemode
- simulation
- amount
- currency
- kind
- revision
type: object
AuthenticationUnavailableResponseDto:
properties:
error:
example: Service Unavailable
type: string
message:
example: API_KEY_VALIDATION_UNAVAILABLE
type: string
statusCode:
example: 503
type: number
required:
- statusCode
- error
- message
type: object
ApiErrorResponseDto:
properties:
error:
description: Same as errorCode
example: DUPLICATE_ORDER_ID
type: string
errorCode:
description: 'Machine-readable, extensible code. Known values: ADYEN_REFUSED, CARD_DATA_NOT_ACCEPTED, RATE_LIMITED, PAYMENT_LINK_INVALID_AMOUNT, PAYMENT_LINK_UNSUPPORTED_CURRENCY, PAYMENT_LINK_INVALID_EXPIRY, PAYMENT_LINK_INVALID_MAX_USES, PAYMENT_LINK_REDIRECT_URL_NOT_ALLOWED, PAYMENT_LINK_METADATA_TOO_LARGE, PAYMENT_LINK_INVALID_TEXT, PAYMENT_LINK_NOT_FOUND, PAYMENT_LINK_INVALID_LIMIT, PAYMENT_LINK_INVALID_CURSOR, API_KEY_ROTATION_REQUIRED, ORDER_ID_RESERVED, NO_CREDENTIALS_FOR_MODE, LIVEMODE_MISMATCH, PSP_OUTCOME_UNKNOWN, PAYMENT_METHOD_REQUIRED, PAYMENT_METHOD_INPUT_WITHOUT_METHOD, NO_PAYMENT_METHODS, IDEMPOTENCY_KEY_INVALID, DUPLICATE_ORDER_ID, IDEMPOTENCY_IN_PROGRESS, IDEMPOTENCY_KEY_REUSED, UPSTREAM_ERROR, UPSTREAM_UNAVAILABLE, UPSTREAM_TIMEOUT, REFUND_INVALID_AMOUNT, REFUND_INVALID_REASON, REFUND_INVALID_METADATA, REFUND_INPUT_INVALID, REFUND_EXCEEDS_AMOUNT, TRANSACTION_NOT_REFUNDABLE, REFUND_NOT_FOUND, REFUND_NOT_SUPPORTED, IDEMPOTENCY_LEASE_LOST, REFUND_SERVICE_UNAVAILABLE. New codes may be added; clients must handle unknown values.'
example: DUPLICATE_ORDER_ID
type: string
existingTransactionId:
description: 'DUPLICATE_ORDER_ID only: the transaction that already uses this orderId'
example: tr_x8k2p0q5scocndpejk0nud75q
type: string
fields:
description: Invalid or missing buyer contact fields for CUSTOMER_CONTACT_REQUIRED
example:
- customer.email
- customer.country
items:
type: string
type: array
idempotencyKey:
description: IDEMPOTENCY_* errors only
example: 0b6f2c1e-4c7a-4a43-9a51-6a4b1d7e9f10
type: string
message:
example: A transaction with orderId "A-1001" already exists for this merchant
type: string
orderId:
description: DUPLICATE_ORDER_ID only
example: A-1001
type: string
status:
example: false
type: boolean
statusCode:
example: 409
type: number
required:
- status
- statusCode
- errorCode
- error
- message
type: object
CashierCreateSessionDto:
properties:
binding:
$ref: '#/components/schemas/CashierPlayerBindingDto'
country:
type: string
expiresAt:
type: string
locale:
type: string
metadata:
type: object
orderId:
type: string
required:
- binding
- orderId
type: object
CashierGrantResponseDto:
properties:
accessToken:
description: Opaque player grant, never a merchant API key. Keep only in memory.
type: string
expiresAt:
format: date-time
type: string
generation:
minimum: 1
type: integer
instanceId:
type: string
serverTime:
format: date-time
type: string
sessionId:
type: string
required:
- sessionId
- instanceId
- accessToken
- expiresAt
- serverTime
- generation
type: object
CashierPlayerBindingDto:
properties:
currency:
example: EUR
type: string
launchMode:
enum:
- embedded
- standalone
type: string
operatorLoginSessionId:
type: string
parentOrigin:
example: https://casino.example
type: string
playerId:
maxLength: 100
minLength: 1
type: string
required:
- playerId
- operatorLoginSessionId
- currency
- parentOrigin
- launchMode
type: object
CashierRevokeSessionDto:
properties:
binding:
$ref: '#/components/schemas/CashierPlayerBindingDto'
required:
- binding
type: object
CashierMintGrantDto:
properties:
binding:
$ref: '#/components/schemas/CashierPlayerBindingDto'
instanceId:
type: string
required:
- binding
- instanceId
type: object
securitySchemes:
X-API-Key:
in: header
name: x-api-key
type: apiKey
bearer:
bearerFormat: Opaque cashier player grant
scheme: bearer
type: http