Worlds / Banking and brokerage
Column API
A local Column with entities, bank accounts, ACH transfers, wires, book transfers and ACH returns. Test the agent that moves money for a fintech and handles return codes correctly.
- Base path
/- Auth
- Basic auth with API key as password, the world key
- Endpoints
- 14
- Status
- Active today
This reference previews the surface the Column world serves in the closed beta. Paths mirror the public Column API; the exact subset is confirmed when your workflow is scoped.
Connect
The run gives your agent these bindings. Keep your SDK; change only where it sends requests.
| binding | meaning |
|---|---|
WORLDS_COLUMN_URL | This world's origin followed by / |
WORLDS_API_KEY | The world key, accepted wherever Column expects a credential |
WORLDS_WORLD_ID | The isolated world's identity |
const base = process.env.WORLDS_COLUMN_URL;
const headers = {
Authorization: "Basic " + Buffer.from(":" + process.env.WORLDS_API_KEY).toString("base64"),
"Content-Type": "application/json",
};
const res = await fetch(base + "/bank-accounts", { headers });
const { bank_accounts } = await res.json();API reference
Bank accounts
FDIC-insured accounts held at the bank.
- POST
/bank-accountsCreate a bank account - GET
/bank-accounts/{id}Get a bank account - PATCH
/bank-accounts/{id}Update a bank account - GET
/bank-accountsList bank accounts
Fields · 4
id | string | Bank account id |
description | string | Account label |
balances | object | Available and pending |
default_account_number | string | Account number |
ACH transfers
Credits and debits over ACH.
- POST
/transfers/achCreate an ACH transfer - GET
/transfers/ach/{id}Get an ACH transfer - POST
/transfers/ach/{id}/cancelCancel an ACH transfer - GET
/transfers/achList ACH transfers
Fields · 5
id | string | Transfer id |
amount | integer | Amount in cents |
type | string | CREDIT or DEBIT |
status | string | initiated, submitted, settled or returned |
counterparty_id | string | Counterparty |
Wire transfers
Domestic wires in and out.
- POST
/transfers/wireCreate a wire - GET
/transfers/wire/{id}Get a wire - GET
/transfers/wireList wires
Fields · 4
id | string | Wire id |
amount | integer | Amount in cents |
status | string | initiated, completed or rejected |
counterparty_id | string | Counterparty |
Counterparties
Outside accounts you pay.
- POST
/counterpartiesCreate a counterparty - GET
/counterparties/{id}Get a counterparty - DELETE
/counterparties/{id}Delete a counterparty
Fields · 4
id | string | Counterparty id |
routing_number | string | Routing number |
account_number | string | Account number |
legal_type | string | business or individual |
Test workflow
- Prepare. Select the Column setup for your workflow and review its starting records, including bank accounts, ach transfers, wire transfers.
- Connect. Configure your agent with this world's URL and key using the SDK example. Check that it reaches the intended API before running a test.
- Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
- Run and inspect. Use the dashboard or your workflow's generated CLI setup. Review final records and changes, then rerun from the same starting setup with the relevant failure conditions. Use Deployment and CI to automate the same workflow.
What to verify
- acht_81 not retried before payday
- No more than one retry for any R01 transfer
- Cobalt Co marked closed and not debited again
- acht_86 submitted to Mira Holt
- No transfer created for Dev Rao
Test file
A task file names the jobs, the policy your agent is given and what the grader reads back from the world's final state. The agent never sees the expected outcomes.
# worlds/tasks.yaml · Column
version: 2
connector: column
seed: column-starter
mode: isolated
policy: >
Process yesterday's ACH returns. Retry R01 debits once after payday, close
out counterparties returned as R02 or R03, and send this week's payouts.
tasks:
- id: originate-ach-credits-and-debits
prompt: Originate ACH credits and debits
- id: process-an-ach-return-by-its-return-code
prompt: Process an ACH return by its return code
- id: book-transfer-between-customer-accounts
prompt: Book transfer between customer accounts
expected:
- acht_81 not retried before payday
- No more than one retry for any R01 transfer
- Cobalt Co marked closed and not debited again
- acht_86 submitted to Mira Holt
- No transfer created for Dev Rao
scenarios:
- return
- validation
- idempotencySee Tasks and outcomes for every field, and Deployment and CI to run the file on every pull request.
Failure conditions
Each one fires before the handler, at the same step on every run.
| condition | what the agent sees |
|---|---|
return | A debit comes back R01 insufficient funds |
validation | A transfer to an invalid routing number returns 400 |
idempotency | A reused Idempotency-Key returns the original transfer |
wire-hold | An outgoing wire is held for manual review |
Starting data
Start each run from the same records and relationships. The overview below describes the Column starter; use the setup supplied for your workflow when preparing your own snapshot.
| Records | Starting setup |
|---|---|
| entities | 60 person and business entities |
| bank accounts | 80 with account numbers |
| ACH transfers | 400 across initiated, submitted, settled and returned |
| wires | 10 outgoing, 1 held |
| returns | 7 with codes R01, R02 and R03 |
The record shapes below reuse this world's API field definitions. They show illustrative values and placeholders, not an importable seed. API responses and seed input can differ; include all required records and references in the accepted import format for your workflow.
Bank accounts records
Bank accounts
FDIC-insured accounts held at the bank.
| Field | Type | Meaning / relationship |
|---|---|---|
id | string | Bank account id |
description | string | Account label |
balances | object | Available and pending |
default_account_number | string | Account number |
{
"id": "<Bank account id>",
"description": "<Account label>",
"balances": {},
"default_account_number": "<Account number>"
}ACH transfers records
ACH transfers
Credits and debits over ACH.
| Field | Type | Meaning / relationship |
|---|---|---|
id | string | Transfer id |
amount | integer | Amount in cents |
type | string | CREDIT or DEBIT |
status | string | initiated, submitted, settled or returned |
counterparty_id | string | Counterparty |
{
"id": "<Transfer id>",
"amount": 1,
"type": "<CREDIT or DEBIT>",
"status": "<initiated, submitted, settled or returned>",
"counterparty_id": "<Counterparty>"
}Wire transfers records
Wire transfers
Domestic wires in and out.
| Field | Type | Meaning / relationship |
|---|---|---|
id | string | Wire id |
amount | integer | Amount in cents |
status | string | initiated, completed or rejected |
counterparty_id | string | Counterparty |
{
"id": "<Wire id>",
"amount": 1,
"status": "<initiated, completed or rejected>",
"counterparty_id": "<Counterparty>"
}Counterparties records
Counterparties
Outside accounts you pay.
| Field | Type | Meaning / relationship |
|---|---|---|
id | string | Counterparty id |
routing_number | string | Routing number |
account_number | string | Account number |
legal_type | string | business or individual |
{
"id": "<Counterparty id>",
"routing_number": "<Routing number>",
"account_number": "<Account number>",
"legal_type": "<business or individual>"
}