canonical: https://jentic.com/apis/griffin.com/griffin

# Griffin The Griffin API

Griffin is a UK banking-as-a-service provider, and the Griffin API is the resource-oriented REST surface that exposes its banking operations. Agents can open and close bank accounts, manage legal persons (KYC subjects), submit and track payments, query transactions, look up Companies House data, run Admissions and Submissions for onboarding, and manage API keys. The API is structured as a tree under your organization with navigation links in every response and uses an Authorization header containing a Griffin-issued API key.

## For AI agents

Open and close UK bank accounts, run KYC admissions, submit payments, and query transactions through Griffin's banking-as-a-service API.

## Scope

Does not handle card processing, accounting, or tax filing - use for UK banking-as-a-service operations on accounts, payments, transactions, and KYC only.

## Capabilities

- Open and inspect bank accounts under an organisation with `/v0/bank/accounts/{bank-account-id}`
- Close a bank account via POST `/v0/bank/accounts/{bank-account-id}/actions/close`
- Create and list payments on an account with `/v0/bank/accounts/{bank-account-id}/payments`
- Read individual transactions through GET `/v0/bank/transactions/{transaction-id}`
- Run KYC admissions and inspect their status with `/v0/admissions/{admission-id}`
- Look up UK companies via GET `/v0/companies-house/companies/{company-number}`
- Manage API keys for the organisation through `/v0/api-keys/{api-key-id}`

## Use cases

### Embedded Banking Onboarding

Run a customer through KYC and then provision a Griffin bank account. The agent submits an admission, polls `/v0/admissions/{admission-id}` until the decision lands, then opens a bank account scoped to the approved legal person. Griffin's tree-shaped API exposes the navigation links inline, so agents can follow them without hard-coding paths.

Example prompt: Submit an admission for the customer, poll GET `/v0/admissions/{admission-id}` until decided, then open the bank account through the navigation link returned in the admission response.

### Payment Initiation and Reconciliation

Initiate a UK payment from a Griffin bank account and reconcile it against the inbound transaction record. The agent calls POST `/v0/bank/accounts/{bank-account-id}/payments` to submit, GET `/v0/bank/accounts/{bank-account-id}/payments` to list, and GET `/v0/bank/transactions/{transaction-id}` to confirm settlement. This avoids stitching together separate payment and ledger tools.

Example prompt: Call POST `/v0/bank/accounts/{bank-account-id}/payments` with the payee details and amount, then poll the payment record until status reaches 'settled' and link the matching transaction.

### Companies House Data Enrichment

Enrich a customer profile with UK Companies House data without bolting on a separate provider. GET `/v0/companies-house/companies/{company-number}` returns the company record direct from Griffin's enrichment proxy, useful during business account onboarding.

Example prompt: Given a company number from a signup form, call GET `/v0/companies-house/companies/{company-number}` and attach the registered address and officers to the case file.

### AI Agent Treasury Assistant

An internal treasury agent uses Griffin to action payments approved by humans. The user says 'pay supplier X £4,500 from the operating account' and the agent searches Jentic for the right Griffin operation, loads the schema, executes the call against the correct account, and reports the payment ID back.

Example prompt: Search Jentic for 'submit a payment from a Griffin bank account', load the POST `/v0/bank/accounts/{bank-account-id}/payments` schema, execute it with the named account ID and payee details, and return the payment ID.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/v0/index` | Bootstrap the API tree with the organisation URL |
| GET | `/v0/bank/accounts/{bank-account-id}` | Get a bank account |
| POST | `/v0/bank/accounts/{bank-account-id}/actions/close` | Close a bank account |
| POST | `/v0/bank/accounts/{bank-account-id}/payments` | Submit a payment |
| GET | `/v0/bank/accounts/{bank-account-id}/transactions` | List transactions on an account |
| GET | `/v0/bank/transactions/{transaction-id}` | Get a single transaction |
| GET | `/v0/admissions/{admission-id}` | Get KYC admission status |
| GET | `/v0/companies-house/companies/{company-number}` | UK Companies House lookup |

## Key resources

- **bank/accounts** — Open, inspect, close, and operate UK bank accounts and their memberships
- **bank/accounts/payments** — Submit and list payments on a bank account
- **bank/transactions** — Read individual transaction records
- **admissions** — Track KYC admissions for legal persons
- **api-keys** — Manage API keys scoped to the organisation
- **companies-house/companies** — Look up UK companies by registration number

## Why Jentic

- **Setup:** Wiring The Griffin API by hand means carrying its API key in the Authorization header and mapping the bank account, payment, transaction, and admission endpoints across the v0 surface yourself. Through Jentic you install once, import The Griffin API from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** Griffin puts the bank account id in the URL path (`/bank/accounts/{bank-account-id}/transactions`, `/bank/accounts/{bank-account-id}/payments`), so a rule can pin your agent to one account: it can read that account's transactions and nothing else. You choose the operations it may call, so ones like sending a payment or closing an account are not included unless you add them.
- **Credential handling:** Your Griffin API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list a bank account's transactions' or 'look up a company at Companies House', and Jentic returns the matching Griffin operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Plaid API** — Account aggregation and bank data - different shape than Griffin, focused on read-only banking data.
- **TrueLayer API** — UK/EU open banking platform with payment initiation and account info.
- **Stripe API** — Card and online payment processor - pair with Griffin to settle card revenue into a Griffin account.

## FAQ

### What authentication does The Griffin API use?

Griffin uses an API key in the Authorization header with the format 'GriffinAPIKey g-test-MyKey-XXXXXXX'. Through Jentic, the key is stored encrypted in your Jentic One instance and the executor injects the full Authorization header at call time.

### Can I open and close UK bank accounts with this API?

Yes. Bank accounts live under the organisation tree at `/v0/bank/accounts/{bank-account-id}.` Closure is a dedicated action - POST `/v0/bank/accounts/{bank-account-id}/actions/close` - rather than a status PATCH, in line with Griffin's design choice to gate sensitive transitions behind explicit endpoints.

### What are the rate limits for the Griffin API?

The OpenAPI spec does not publish explicit rate limits. Griffin applies tenant-level throttles based on the API key's plan. Production agents should handle 429 responses with exponential backoff and surface failures to the workflow.

### How do I submit a payment through Jentic?

Search Jentic for 'submit a payment from a bank account', load the POST `/v0/bank/accounts/{bank-account-id}/payments` schema, then execute it with the bank account ID, payee, and amount. The Authorization header is injected from the vault.

### Does the API support pagination on list endpoints?

Yes. List responses include a links object with prev and next URLs. Page size is controlled with the page[size] query parameter (1-200, default 25). Agents follow the next link to walk through the full result set.

### How do I test the Griffin API safely?

Anyone can register at app.griffin.com/register and try the API in sandbox mode with a test API key (prefix g-test-). The same endpoints apply - the only difference is the key and that no real funds move.

### Can I limit what my agent is allowed to do with the Griffin API?

Yes. Because you run Jentic One yourself and your own rules decide which operations and credentials the agent may use, you choose exactly which Griffin operations it can call. Since Griffin puts the bank account id in the URL path, such as `/v0/bank/accounts/{bank-account-id}/transactions`, you can pin the agent to a single account so it reads that account's transactions and nothing else. Higher-risk operations like POST `/v0/bank/accounts/{bank-account-id}/payments` or the close-account action are excluded unless you explicitly add them, and the encrypted API key is injected at call time rather than exposed to the agent.
