Generate a client

bind.co ships no SDK of its own. The API reference is a standard OpenAPI document, so you generate a typed client for your language with the usual OpenAPI tools, and regenerate it whenever you like.

1. Download the reference

curl -o bind-openapi.json https://api.bind.co/v1/openapi.json

It describes every public /v1 route: parameters, bodies, answers, examples, errors, rate limits and the scopes each route needs. No token is needed to read it.

2. Generate

Use one of the generators below. Each command reads the file you downloaded; you can pass the URL instead.

TypeScript, with openapi-ts by Hey API:

npx @hey-api/openapi-ts -i bind-openapi.json -o src/bind-client

For types only, with openapi-typescript:

npx openapi-typescript https://api.bind.co/v1/openapi.json -o src/bind-api.d.ts

Python, with openapi-python-client:

pipx run openapi-python-client generate --path bind-openapi.json --output-path bind_client

Any other language, with OpenAPI Generator. Pick the language with -g, for example go, java, kotlin, csharp, php or ruby:

npx @openapitools/openapi-generator-cli generate -i bind-openapi.json -g go -o bind-client

3. What to expect

Method names. Every operation has an operationId that is a stable snake_case name, such as expenses_search, expenses_get_one or send_draft. Generators turn it into the method name. A rename is a breaking change, announced in the changelog.

Operation types. Each operation type in the catalogue, such as expenses, has its own routes and types. When a new type is added, download the reference again and regenerate.

Authentication. The reference declares two schemes, and each operation names the one it takes:

A few routes, such as GET /v1/operations/{operation_type}/schema, take no credentials at all.

OAuth lives at the API root. The OAuth endpoints are https://api.bind.co/oauth2/authorize, /oauth2/token, /oauth2/revoke and /oauth2/introspect, with no /v1, as https://api.bind.co/.well-known/oauth-authorization-server advertises. The reference also lists them under /v1, where they answer the same, so a generated client can call them. Build the /oauth2/authorize URL yourself and send the user's browser there; the quickstart shows how.

Errors. Every error answer has the same body, BindErrorBody in the reference. Branch on its error field; see Errors.