> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.messageblue.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.messageblue.ai/_mcp/server.

# MessageBlue Client SDKs

You can call the [MessageBlue API](/api-reference) directly over HTTPS from anything that speaks HTTP. The SDKs exist to save you the boilerplate: authentication, request shaping, retries and — most usefully — types that tell you when a call is wrong before you run it.

Every client is **generated from the same OpenAPI specification that produces this documentation**. When an endpoint changes, the reference and the SDKs are regenerated together, so a method signature disagreeing with these pages is a bug rather than a version skew you have to reason about.

#### [TypeScript](/messageblue-typescript-sdk)

`npm install messageblue` — typed client for Node and TypeScript projects, with no runtime dependencies.

#### [Other languages](/support)

Only TypeScript is published today. Tell us which language you need and it can be generated from the same spec.

## Which to use

| You are…                               | Use                                               |
| -------------------------------------- | ------------------------------------------------- |
| Writing Node or TypeScript on a server | The [TypeScript SDK](/messageblue-typescript-sdk) |
| Automating with no code                | [Zapier](/zapier-messageblue-integration)         |
| Working inside a CRM                   | [HubSpot](/hubspot-messageblue-integration)       |
| On another stack, or want full control | The [REST API](/api-reference) directly           |

## Authentication, in one place

Every SDK and every direct API call authenticates the same way: an **App ID** identifying your app, and an **App Secret** proving it is you. Both come from [Settings → API & secrets](/settings#api-and-secrets).

The App Secret is a **server-side** credential and is displayed only once when created. Keep it in an environment variable or a secret manager — never in browser code, a mobile app bundle, or a committed file. If it leaks, regenerate it from Settings; regeneration takes effect immediately and breaks any integration still using the old value.

## Reporting problems

SDK and reference are generated from one spec, so a mismatch in either is worth reporting — [contact support](/support) with the endpoint, what you sent, and what you expected.