Connections
- Base path
/api/v1/bank-connect- Identity
- Ed25519 request signature on every request —
X-Key-Id,X-Date,X-Nonce,X-Signature. ±5 min clock window, single-use nonce. A Bearer token or a panel session is not accepted here (401 AUTH_HEADERS_MISSING). - Authorization
- The key must carry the Bank Connections product (
BANK_CONNECT) and the permission for the endpoints on this page:bank-connect:view. Without the product the call gets403 PRODUCT_NOT_ENABLED; without the permission403 API_INSUFFICIENT_SCOPE. See API Introduction › Permissions. - Cross-surface
- These endpoints are the s2s surface — call them from your own server with a signed request. The same data has screens in the panel, but panel endpoints cannot be called with an API key, and these endpoints cannot be called with a panel session. Connecting and disconnecting a bank is done only in the panel.
A connection is the read connection you set up with a bank. You set it up in the panel; these endpoints read the status of your connections. What the statuses mean: Concepts › Connection statuses.
List connections
GET /api/v1/bank-connect/connections
| Query parameter | Type | Description |
|---|---|---|
status | string | Comma-separated statuses, e.g. ACTIVE,DEGRADED. Values: PENDING_DOCUMENTS, UNDER_REVIEW, PENDING_SETUP, ACTIVE, DEGRADED, SUSPENDED, DISCONNECTED. |
bankId | string (UUID) | Only connections to this bank. |
limit | integer | Records per page, 1–100. Default 25. |
cursor | string | pageInfo.nextCursor from the previous response. |
source lunixi-sign.sh
REQ_PATH="/api/v1/bank-connect/connections?status=ACTIVE,DEGRADED"
lunixi_sign GET "$REQ_PATH"
curl "https://api-gateway.lunixi.com$REQ_PATH" \
-H "X-Key-Id: $LUNIXI_KEY_ID" \
-H "X-Date: $DATE" \
-H "X-Nonce: $NONCE" \
-H "X-Signature: $SIGNATURE"$bankConnect in the PHP example: API Introduction › PHP SDK.
{
"status": "success",
"code": "SUCCESS",
"data": {
"items": [
{
"connectionId": "00000000-0000-0000-0000-000000000010",
"bank": { "bankId": "00000000-0000-0000-0000-000000000001", "eftCode": "0000", "name": "ÖRNEK BANKA" },
"status": "ACTIVE",
"statusReasonCode": "activated",
"createdAt": "2026-01-01T06:00:00.000Z",
"activatedAt": "2026-01-01T07:00:00.000Z",
"lastSuccessfulSyncAt": "2026-01-01T07:05:00.000Z",
"accountCount": 1,
"capabilities": ["ACCOUNT_LIST", "BALANCE", "TRANSACTIONS"]
}
]
},
"pageInfo": { "hasMore": false, "nextCursor": null, "totalCount": null },
"statusCode": 200,
"requestId": "00000000-0000-0000-0000-000000000000"
}Single connection
GET /api/v1/bank-connect/connections/{connectionId} returns a single connection. data is the connection object itself; the fields are the same as in the list. A connection that is unknown, belongs to another organization or to the other environment returns 404 bank_connect.connection.not_found.
The connection object
| Field | Type | Description |
|---|---|---|
connectionId | string (UUID) | The connection's ID. |
bank | object | bankId, eftCode and, when available, name. |
status | string | The connection status. → Connection statuses |
statusReasonCode | string | The reason for the status; see the table below. Absent when there is no value. |
createdAt | string | When the connection (the application) was created. |
activatedAt | string | When the connection became active. Absent if it has not been active yet. |
lastSuccessfulSyncAt | string | Time of the last successful read from the bank for this connection. Absent if there has been no read yet. |
accountCount | integer | Number of accounts found under the connection. |
capabilities | string[] | What can be done on this connection. With OUTGOING_TRANSFER you can make money transfers, with FX_EXCHANGE currency exchange. Values: Banks › capabilities. |
Status reason codes
statusReasonCode is a short, stable code; choose the text you display based on this code yourself. New codes may be added; do not treat an unknown code as an error, act on the status field only.
| Code | Meaning |
|---|---|
documents_required | Application documents are pending. |
documents_submitted | Your documents are being reviewed by Lunixi. |
document_rejected | A document was rejected; review the reason in the panel and deliver it again. |
application_approved | Your application was approved; setup is in progress. |
manual_setup_required | Setup is being completed by Lunixi. |
credential_required | The connection details needed for setup are pending. |
action_required | An additional step is required to complete setup; check the connection details in the panel. |
activated | The connection is active. |
setup_failed | Setup could not be completed. |
sync_failures_threshold | Recent reads failed in a row (the connection is DEGRADED). |
sync_recovered | Reads are succeeding again. |
credential_invalid | The connection details are invalid and need to be updated in the panel. |
disconnected_by_owner | You disconnected this connection. |
disconnected_by_operator | The connection was disconnected by Lunixi. |
Errors
| HTTP | code | What to do |
|---|---|---|
400 | VALIDATION_ERROR | status or bankId is invalid, limit is outside 1–100, or you sent an undeclared parameter. |
400 | bank_connect.cursor.invalid | Send the cursor unchanged or start from the first page. |
404 | bank_connect.connection.not_found | Check the ID and your key's environment. |