curl --request GET \
--url https://api-sandbox.endl.io/api/v0/accounts/cus_9FpQ2LmZ8sW4TxKn1BvD/acct_7Kq2XbN4mR8vLp1DcYtZ/activity \
--header 'API-KEY: <api-key>' \
--header 'Api-Version: 2026-09.1'
{
"accountId": "acct_8f2a1c4e9b7d43a6",
"data": [
{
"id": "txn_5MnV8pRt2QwE7ZxB4Kdc",
"type": "deposit",
"status": "Completed",
"amount": { "amount": "2500.00", "currency": "USD" },
"description": "ACH credit",
"occurredAt": "2026-09-18T08:12:55Z"
},
{
"providerReference": "bridge_evt_7781",
"type": "fee",
"status": "In-Progress",
"amount": { "amount": "2.50", "currency": "USD" },
"occurredAt": "2026-09-18T08:12:56Z"
}
]
}
{
"code": 400,
"message": "User id is required",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRACC_1000",
"message": "User id is required",
"field": "userId"
}
]
}
{
"code": 401,
"message": "Partner API key required",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1004",
"message": "Partner API key required",
"field": null
}
]
}
{
"code": 403,
"message": "Insufficient permissions",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1005",
"message": "Insufficient permissions",
"field": null
}
]
}
{
"code": 404,
"message": "User with ID 'cus_…' not found",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRREF_1001",
"message": "User with ID 'cus_…' not found",
"field": "userId"
}
]
}
{
"code": 405,
"message": "HTTP … is not supported for this endpoint",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1001",
"message": "HTTP … is not supported for this endpoint",
"field": null
}
]
}
{
"code": 429,
"message": "Rate limit exceeded, please retry later",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1006",
"message": "Rate limit exceeded, please retry later",
"field": null
}
]
}
{
"code": 500,
"message": "An error occurred while processing your request",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1000",
"message": "An error occurred while processing your request",
"field": null
}
]
}
Get account activity
Returns the account’s movements, newest first.
There is no pagination and no date filter — an account with a long history returns everything in one response. Amounts are absolute values, so read direction from type, not from a sign.
Amounts carry no sign — Every amount is an absolute value. A credit and a debit of the same size are indistinguishable except by type.
No pagination — Plan for a large response on a busy account.
Requires the accounts permission.
curl --request GET \
--url https://api-sandbox.endl.io/api/v0/accounts/cus_9FpQ2LmZ8sW4TxKn1BvD/acct_7Kq2XbN4mR8vLp1DcYtZ/activity \
--header 'API-KEY: <api-key>' \
--header 'Api-Version: 2026-09.1'
{
"accountId": "acct_8f2a1c4e9b7d43a6",
"data": [
{
"id": "txn_5MnV8pRt2QwE7ZxB4Kdc",
"type": "deposit",
"status": "Completed",
"amount": { "amount": "2500.00", "currency": "USD" },
"description": "ACH credit",
"occurredAt": "2026-09-18T08:12:55Z"
},
{
"providerReference": "bridge_evt_7781",
"type": "fee",
"status": "In-Progress",
"amount": { "amount": "2.50", "currency": "USD" },
"occurredAt": "2026-09-18T08:12:56Z"
}
]
}
{
"code": 400,
"message": "User id is required",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRACC_1000",
"message": "User id is required",
"field": "userId"
}
]
}
{
"code": 401,
"message": "Partner API key required",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1004",
"message": "Partner API key required",
"field": null
}
]
}
{
"code": 403,
"message": "Insufficient permissions",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1005",
"message": "Insufficient permissions",
"field": null
}
]
}
{
"code": 404,
"message": "User with ID 'cus_…' not found",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRREF_1001",
"message": "User with ID 'cus_…' not found",
"field": "userId"
}
]
}
{
"code": 405,
"message": "HTTP … is not supported for this endpoint",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1001",
"message": "HTTP … is not supported for this endpoint",
"field": null
}
]
}
{
"code": 429,
"message": "Rate limit exceeded, please retry later",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1006",
"message": "Rate limit exceeded, please retry later",
"field": null
}
]
}
{
"code": 500,
"message": "An error occurred while processing your request",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1000",
"message": "An error occurred while processing your request",
"field": null
}
]
}
Errors
| Status | Code | When |
|---|---|---|
400 | ERRACC_1000 | The {userId} path segment is blank or whitespace. field: userId |
400 | ERRREF_1000 | {accountId} is blank, malformed, or not an acct_… reference. field: accountId |
400 | ERRCORE_1001 | The version header is missing, malformed, or names a version the server does not support. field: Api-Version |
400 | ERRCORE_1001 | The raw path contains a doubled slash, an encoded slash, a backslash or a control character. |
401 | ERRCORE_1004 | The Api-Key header is missing, does not match an active credential, or its partner is inactive. |
403 | ERRCORE_1005 | The key is valid but lacks the accounts permission. |
403 | ERRCORE_1005 | The calling IP is outside the allow-list configured on the key. |
404 | ERRREF_1001 | {userId} resolves to nothing, belongs to another partner, or the customer is soft-deleted. field: userId |
404 | ERRREF_1001 | A well-formed account reference that resolves to no row. field: accountId |
404 | ERRACC_1001 | The account reference resolved, but no such account belongs to this customer. field: accountId |
404 | ERRCORE_1002 | Relayed from the core service when the resolved user is missing there — a data race, rarely seen. |
405 | ERRCORE_1001 | Wrong verb on a real path, e.g. PUT on Get Account. |
429 | ERRCORE_1006 | The per-API-key limit was exhausted. Carries X-RateLimit-Limit and X-RateLimit-Remaining. |
500 | ERRCORE_1000 | An unexpected server error. Quote the X-Request-ID when reporting it. |
curl --request GET \
--url https://api-sandbox.endl.io/api/v0/accounts/cus_9FpQ2LmZ8sW4TxKn1BvD/acct_7Kq2XbN4mR8vLp1DcYtZ/activity \
--header 'API-KEY: <api-key>' \
--header 'Api-Version: 2026-09.1'
{
"accountId": "acct_8f2a1c4e9b7d43a6",
"data": [
{
"id": "txn_5MnV8pRt2QwE7ZxB4Kdc",
"type": "deposit",
"status": "Completed",
"amount": { "amount": "2500.00", "currency": "USD" },
"description": "ACH credit",
"occurredAt": "2026-09-18T08:12:55Z"
},
{
"providerReference": "bridge_evt_7781",
"type": "fee",
"status": "In-Progress",
"amount": { "amount": "2.50", "currency": "USD" },
"occurredAt": "2026-09-18T08:12:56Z"
}
]
}
{
"code": 400,
"message": "User id is required",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRACC_1000",
"message": "User id is required",
"field": "userId"
}
]
}
{
"code": 401,
"message": "Partner API key required",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1004",
"message": "Partner API key required",
"field": null
}
]
}
{
"code": 403,
"message": "Insufficient permissions",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1005",
"message": "Insufficient permissions",
"field": null
}
]
}
{
"code": 404,
"message": "User with ID 'cus_…' not found",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRREF_1001",
"message": "User with ID 'cus_…' not found",
"field": "userId"
}
]
}
{
"code": 405,
"message": "HTTP … is not supported for this endpoint",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1001",
"message": "HTTP … is not supported for this endpoint",
"field": null
}
]
}
{
"code": 429,
"message": "Rate limit exceeded, please retry later",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1006",
"message": "Rate limit exceeded, please retry later",
"field": null
}
]
}
{
"code": 500,
"message": "An error occurred while processing your request",
"status": "ERROR",
"data": null,
"errors": [
{
"code": "ERRCORE_1000",
"message": "An error occurred while processing your request",
"field": null
}
]
}
Authorizations
Your partner API key.
Headers
The API version this request targets. Required on every /api/v0/* call. Format YYYY-MM.<release>; 2026-09.1 is the latest. The version that served the request is echoed back on the response. Missing, malformed or unsupported values are rejected with 400.
^\d{4}-\d{2}\.\d+$Path Parameters
The customer the account belongs to. Must be a cus_… reference id, and must belong to your partner account. Blank → 400 ERRACC_1000; malformed, unknown, soft-deleted or another partner's → 404 ERRREF_1001.
"cus_9HqA2mT7xK4vRb1NdLpZ"
The account to act on. Must be an acct_… reference id. Malformed → 400 ERRREF_1000; well-formed but unknown → 404 ERRREF_1001.
"acct_8f2a1c4e9b7d43a6"