VantaCrestAlpineVantaCrest
Access →
Alpine/Develop/Endpoints
POST /v1/programmable-endpoints

Endpoints

Money lands on endpoints, not on accounts directly. A programmable endpoint declares its posture — what it may receive, send, and how it retires — and you steer it through one lifecycle call.

Live in the sandbox

A programmable endpoint declares what it may do.

Request
GET/v1/programmable-endpoints/ep_7Q4
Authorization: Bearer ak_live_7Q4…
Response200 OK
{
  "endpointRef": "ep_7Q4",
  "accountRef": "acc_8xK2",
  "holdingRef": "hld_USD",
  "unit": { "kind": "fiat", "currency": "USD" },
  "capabilityPosture": {
    "receive": "external_and_internal",
    "send": "outbound_enabled",
    "lifecycle": "manual_retirement",
    "purpose": "customer_balance",
    "backing": "internal_ledger"
  },
  "locators": [
    { "form": "uk_sort_code_account", "display": "20-04 …7Q4" }
  ]
}
Read an endpoint
Request
POST/v1/programmable-endpoints/ep_7Q4/lifecycle
Authorization: Bearer ak_live_7Q4…
Idempotency-Key: ce91-ep-7Q4
{
  "operation": "suspend",
  "reason": "compliance_hold"
}
Response200 OK
{
  "endpointRef": "ep_7Q4",
  "previousPosture": "active",
  "currentPosture": "suspended",
  "currentStateVersion": 4
}
Suspend, then resume

A posture, dimension by dimension.

ep_7Q4 · capability posturetap to dig in
Operations
POST/v1/programmable-endpointsOpen a programmable endpoint.idempotent
GET/v1/programmable-endpointsList endpoints.
GET/v1/programmable-endpoints/{endpointRef}Read one endpoint and its posture.
POST/v1/programmable-endpoints/{endpointRef}/lifecycleSuspend or resume an endpoint.idempotent
POST/v1/receiving-endpointsOpen a receiving endpoint.idempotent
GET/v1/receiving-endpoints/currentRead the current receiving endpoint.

Posture is the contract

Every endpoint carries a capabilityPosture: what it may receive and send, how it retires, what backs it, and what it is for. Explore it dimension by dimension below, and read it before you trust an endpoint with value.

Open, list, read

POST /v1/programmable-endpoints opens one against an account owner; GET lists them and reads one by ref. A simpler receiving endpoint, POST /v1/receiving-endpoints, is available when all you need is somewhere for money to land.

Steered by lifecycle

You never edit an endpoint in place. You issue a lifecycle command — suspend or resume — and the response returns the previous and current posture with a new stateVersion. Open obligations block a command rather than stranding value.

When it fails
400invalid-InputThe transition is not allowed from the current posture.
404not-foundNo endpoint at that ref.
409conflict-…Open obligations must clear first, or the endpoint moved since you read it (stale stateVersion).