> ## Documentation Index
> Fetch the complete documentation index at: https://developers.octaviatech.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Node.js

> The Node.js client for the Octavia AI CMS API — what it covers and how to call it.

A Node.js 18+ or any browser with `fetch` client for the Octavia AI CMS API. TypeScript types are inferred from the OpenAPI spec, so a field that is keyed by language code comes back as a record you narrow before reading.

<Info>Every method on this page is listed with its parameters and types on the [methods page](/api-reference/ai-cms/sdks/javascript/methods).</Info>

## What the SDK gives you

* **One method per operation.** Every endpoint in the [API reference](/api-reference/ai-cms/introduction) has a
  method, and each method's name, arguments and return shape come from the spec.
* **A typed response.** TypeScript types are inferred from the OpenAPI spec, so a field that is keyed by language code comes back as a record you narrow before reading.
* **A result object, not an exception.** By default a failed call comes back as a value with `ok` false, so batch
  work does not need a `try`/`catch` around every request. No runtime dependencies.

## How it is organized

The client groups methods by resource, so a call reads the same way as the route it calls:

```ts theme={null}
cms.article.getById("6810f2c3a1b2c3d4e5f60718");
cms.category.getAll({ query: { page: 1, limit: 10 } });
cms.ai.summarize({ text: "..." });
```

`cms` is the client you initialized, and each segment after it is a resource followed by a method. The
full list of resources and every method under them is on the [methods page](/api-reference/ai-cms/sdks/javascript/methods).

## Authentication

The API key is the only credential. It is sent as the `x-api-key` header on every request, and it is the only
header the SDK sets — there is no header parameter and no hook for adding one. The gateway handles tenant routing
and service status itself.

```bash theme={null}
export OCTAVIA_API_KEY="0x-OCT..."
```

Never commit a key. Read it from the environment, and keep it on the server: a key in browser or mobile code is a
key anyone can extract.

## Where to go next

* [Install and use](/api-reference/ai-cms/sdks/javascript/install) — initialize the client and make your first call.
* [Methods](/api-reference/ai-cms/sdks/javascript/methods) — every method, with its parameters and types.
* [Errors and rate limits](/api-reference/ai-cms/rate-limits-and-errors) — what each status code means and how to
  back off.
