# @standardagents/novita

Novita AI provider package for Standard Agents using Novita's OpenAI-compatible Chat Completions API

> **Info:**
>
> For direct access, set `NOVITA_API_KEY` in your environment. Standard Agents Builder can use hosted routing through `STANDARD_AGENTS_API_KEY` when the provider key is absent. Hosted access depends on platform configuration.

## Overview

The `@standardagents/novita` package provides a Novita AI provider factory for Standard Agents. It targets Novita's OpenAI-compatible Chat Completions API and adds typed `providerOptions`, authenticated model discovery, request inspection, tool calling, streaming, structured outputs, and live catalog pricing.

- Key Features

  - Direct integration with `https://api.novita.ai/openai/v1/chat/completions`
  - Live model discovery from `https://api.novita.ai/openai/v1/models`
  - Tool calling, structured outputs, streaming, and reasoning controls
  - Catalog price normalization into `inputPrice`, `outputPrice`, `cachedPrice`, and `usage.pricing`

## Installation

```bash npm
npm install @standardagents/novita
```

```bash pnpm
pnpm add @standardagents/novita
```

```bash yarn
yarn add @standardagents/novita
```

## Quick Start

```typescript agents/models/novita_reasoning.ts
import { defineModel } from '@standardagents/spec';
import { novita } from '@standardagents/novita';

export default defineModel({
  name: 'novita-reasoning',
  provider: novita,
  model: 'deepseek/deepseek-v3.2',
});
```

## Provider Options

```typescript
import { defineModel } from '@standardagents/spec';
import { novita } from '@standardagents/novita';

export default defineModel({
  name: 'novita-agentic',
  provider: novita,
  model: 'zai-org/glm-5.2',
  providerOptions: {
    seed: 42,
    top_k: 40,
    separate_reasoning: true,
    enable_thinking: true,
  },
});
```

### Available Options

| Option               | Type                     | Description                                                     |
| -------------------- | ------------------------ | --------------------------------------------------------------- |
| `seed`               | `number`                 | Best-effort deterministic sampling seed                         |
| `frequency_penalty`  | `number`                 | Penalize repeated tokens based on frequency                     |
| `presence_penalty`   | `number`                 | Penalize repeated tokens based on presence                      |
| `repetition_penalty` | `number`                 | Novita repetition penalty                                       |
| `top_k`              | `number`                 | Top-k sampling limit                                            |
| `min_p`              | `number`                 | Minimum probability threshold relative to the most likely token |
| `logit_bias`         | `Record<string, number>` | Token logit biases                                              |
| `logprobs`           | `boolean`                | Return output token log probabilities                           |
| `top_logprobs`       | `number`                 | Number of top logprobs to return                                |
| `separate_reasoning` | `boolean`                | Request reasoning content separately when supported             |
| `enable_thinking`    | `boolean`                | Enable or disable model thinking when supported                 |
| `modalities`         | `string[]`               | Output modalities for models that can return audio              |

The schema is passthrough, so newly documented Novita fields can be supplied before this package adds first-class typings.

## Model IDs

Novita model IDs are sent directly, for example:

- `zai-org/glm-5.2`
- `moonshotai/kimi-k2.7-code`
- `minimax/minimax-m3`
- `deepseek/deepseek-v4-pro`
- `deepseek/deepseek-v4-flash`
- `deepseek/deepseek-v3.2`

The provider reads authenticated model metadata from `https://api.novita.ai/openai/v1/models` and exposes those models in the Standard Agents UI.

Novita reports catalog prices as scaled integers. Tiered models use the request's prompt token count to select the applicable catalog tier. The provider normalizes those values to USD per 1M tokens before returning `inputPrice`, `outputPrice`, `cachedPrice`, and per-request `usage.pricing`.

When Novita includes `pricing.input_cache_read.price_per_m`, the provider maps it to `usage.pricing.cachedInputPerMillion` and uses it for `prompt_tokens_details.cached_tokens`. Cache write tokens remain normal prompt input tokens and are priced at the standard input rate.

Custom or private Novita models should still set `inputPrice`, `outputPrice`, and `cachedPrice` explicitly if they do not appear in Novita's model catalog.

## Environment Setup

```bash .dev.vars
NOVITA_API_KEY=...
```

For a deployed project, set `NOVITA_API_KEY` in your project's environment settings on the Standard Agents platform.

## Notes

- The provider uses Chat Completions, not OpenAI Responses.
- Novita's model catalog requires authentication.
- A prompt's explicit `reasoning.level` maps to the model's native reasoning control. A level of `0` requests no reasoning. When the model supports disabling thinking, the provider disables it. When the level is omitted, native settings in `providerOptions` apply.
- For custom base URLs, configure the provider `baseUrl` slot with the full OpenAI-compatible base, such as `https://api.novita.ai/openai/v1`.

## Related

- [Models](/docs/core-concepts/models)

  Core model concepts

* [Cerebras Provider](/docs/providers/cerebras)

  Compare another Chat Completions provider

- [OpenRouter Provider](/docs/providers/openrouter)

  Compare with a multi-provider gateway
