Explore posted money movements
tenant.money.explore
Sums or counts the company's posted transfers over a time window, grouped by product, account, customer, day, or month. Choose the cash or claim book and whether to read the source or destination side. A window with more than 50,000 transfers is refused. Callers: the founder's CLI login, or an agent token with products:read.
GET /v1/money/explore
Principal user_session. Idempotency not_required. Environment either.
Input
| Field | In | Type | Description |
|---|---|---|---|
tenantId required | query | string | Organization tenant ID |
productId | query | string | Hyperscale product ID |
from required | query | string | |
to required | query | string | |
previousFrom | query | string | |
previousTo | query | string | |
top | query | 5 | 10 | 25 | |
measure | query | amount | count | |
by | query | product | account | customer | day | month | |
subgroup | query | product | account | customer | day | month | |
side | query | source | destination | |
book | query | cash | claim | |
accountId | query | string | Hyperscale account ID |
customerId | query | string | Tenant-local customer ID |
amountMin | query | string | Non-negative minor-unit integer amount serialized as a string (at most 18 digits) |
amountMax | query | string | Non-negative minor-unit integer amount serialized as a string (at most 18 digits) |
X-Hyperscale-Environment | header | sandbox | live |
Request sample
curl --request GET 'https://hyperscale0.ai/v1/money/explore' \
--header "Authorization: Bearer $HYPERSCALE_API_KEY" \
--header 'X-Hyperscale-Environment: sandbox'Errors
| Code | HTTP | Cause |
|---|---|---|
agent_approval_denied | 403 | A human denied the agent's proposed operation. |
agent_approval_required | 202 | An agent proposed a protected live operation. |
environment_mismatch | 403 | The session was issued for sandbox or live and the request targets the other environment. |
internal_error | 500 | Hyperscale hit an unexpected server-side condition and hid internal implementation details from this audience. |
invalid_request | 400 | The request does not match the API reference. |
missing_required_permission | 403 | The signed-in member's current role does not grant the permission required for this operation. |
missing_required_scope | 403 | The credential is valid but does not grant one or more operation scopes. |
not_found | 404 | No Hyperscale route matched the requested path and method. |
product_access_suspended | 403 | The Product is disabled or closed, so its credentials are suspended in every environment. |
product_activation_required | 403 | The live Product or required live capability is not active yet. |
rate_limited | 429 | The credential sent more than its limit in the current 60-second window: 600 requests per API key or session, 1,200 per IP address. Every response carries `x-ratelimit-limit`, `x-ratelimit-remaining` and `x-ratelimit-reset` (Unix seconds). |
resource_not_found | 404 | The requested resource does not exist in the credential's visible scope. |
resource_reader_unavailable | 503 | A generated read model could not serve the request at this moment. |
state_conflict | 409 | The operation conflicts with the current durable state of the resource. |
tenant_mismatch | 403 | The request mixed tenant-owned identifiers across tenant boundaries. |
tenant_not_found | 404 | The credential resolved to a tenant Hyperscale cannot find. |
unauthorized | 403 | The request did not include a valid Hyperscale bearer credential for this environment. |
agent_token_expired | 401 | The agent token is real, but its grant ended. A grant lasts 30 days, or 7 days unused. `details.expiresAt` holds the date in ISO 8601 and `details.agentName` names the agent. |
agent_token_replaced | 401 | The founder ran `hyperscale agent setup` again for this agent, which replaced this token with a newer one. `details.agentName` names the agent and `details.replacedAt` holds the date. |
device_login_expired | 401 | The bearer is the founder's own device login from `hyperscale auth login`, not an agent token. Its access token lasts an hour and the CLI refreshes it; the login itself ends after 30 days, or 7 days unused. `details.expiresAt` holds when it ended in ISO 8601. |
invalid_credentials | 401 | Hyperscale could not accept the account or credential request. Signup, login, and bearer authentication use one 401 for every case they reject, so the response exposes no credential-specific reason or registered-email verdict. The single exception is a key that is real but homed in the other environment: because the presented secret already matched a stored key, the message names the mismatch instead of leaving a working credential looking unknown. A bearer that matched nothing gets text that fits its prefix (an agent token, a refresh token, a personal access token, a session or no Hyperscale token at all), which says only what the caller sent, never whether a credential like it exists. |
ledger_unavailable | 503 | The ledger could not be reached, did not answer in time, or returned incomplete evidence for the accounts this request reads. `details.reason` is `request_timeout` when the call timed out. |
money_explore_range_too_large | 413 | The requested windows contain more than 50,000 posted ledger transfers. |
session_expired | 401 | The session behind this request has ended. A console session ends 30 days after sign-in, or after 12 hours with no request. An admin or customer session ends 24 hours after sign-in, or after 15 minutes with no request. A personal access token ends at the `expiresAt` set when it was created. |
session_required | 401 | This operation needs a person signed in through the browser or the `hyperscale` CLI. A Product API key cannot call it. The request carried no session, or its token matched no live session. |
session_revoked | 401 | The session or personal access token behind this request was ended before its expiry. Sign-out, `user.session.revoke`, a password reset, a role change, removal from the team, user suspension and `personal_access_token.revoke` all end sessions. |
tenant_status_forbidden | 409 | The company is suspended or closed, so every credential bound to it is refused, reads included. `details.tenantId` names the company. |