Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@
},
"getting-started/integration-method/openrouter",
"getting-started/integration-method/perplexity",
"getting-started/integration-method/saladcloud",
"getting-started/integration-method/together",
{
"group": "xAI",
Expand Down
39 changes: 39 additions & 0 deletions docs/getting-started/integration-method/saladcloud.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: "SaladCloud Integration"
sidebarTitle: "SaladCloud"
description: "Use SaladCloud AI Gateway models through Helicone AI Gateway."
"twitter:title": "SaladCloud Integration - Helicone OSS LLM Observability"
---

SaladCloud AI Gateway is OpenAI-compatible. In Helicone AI Gateway, route to SaladCloud by saving your SaladCloud API key in Provider Keys and using a SaladCloud model route such as `qwen3.6-35b-a3b/saladcloud`.

<Steps>
<Step title="Create your API keys">
Create a Helicone API key from the [Developer](https://helicone.ai/developer) page and create a SaladCloud AI Gateway API key from SaladCloud.
</Step>
<Step title="Add SaladCloud as a provider key">
In Helicone, add a new Provider Key for SaladCloud and paste your SaladCloud API key.
</Step>
<Step title="Call Helicone AI Gateway">

```bash
curl https://ai-gateway.helicone.ai/v1/chat/completions \
-H "Authorization: Bearer $HELICONE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.6-35b-a3b/saladcloud",
"messages": [
{
"role": "user",
"content": "Hello from SaladCloud through Helicone"
}
]
}'
```

</Step>
</Steps>

Supported SaladCloud model routes include `qwen3.6-35b-a3b/saladcloud`, `qwen3.6-27b/saladcloud`, and `qwen3.5-9b/saladcloud`.

For SaladCloud model and pricing details, see the [SaladCloud AI Gateway model reference](https://docs.salad.com/ai-gateway/reference/models) and [pricing reference](https://docs.salad.com/ai-gateway/reference/pricing).
110 changes: 107 additions & 3 deletions packages/__tests__/cost/__snapshots__/registrySnapshots.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,78 @@ exports[`Registry Snapshots endpoint configurations snapshot 1`] = `
"*",
],
},
"qwen3.5-9b:saladcloud": {
"context": 131072,
"crossRegion": false,
"maxTokens": 8192,
"modelId": "qwen3.5-9b",
"parameters": [
"frequency_penalty",
"max_tokens",
"presence_penalty",
"response_format",
"seed",
"stop",
"stream",
"temperature",
"tool_choice",
"tools",
"top_p",
],
"provider": "saladcloud",
"ptbEnabled": false,
"regions": [
"*",
],
},
"qwen3.6-27b:saladcloud": {
"context": 131072,
"crossRegion": false,
"maxTokens": 16384,
"modelId": "qwen3.6-27b",
"parameters": [
"frequency_penalty",
"max_tokens",
"presence_penalty",
"response_format",
"seed",
"stop",
"stream",
"temperature",
"tool_choice",
"tools",
"top_p",
],
"provider": "saladcloud",
"ptbEnabled": false,
"regions": [
"*",
],
},
"qwen3.6-35b-a3b:saladcloud": {
"context": 131072,
"crossRegion": false,
"maxTokens": 16384,
"modelId": "qwen3.6-35b-a3b",
"parameters": [
"frequency_penalty",
"max_tokens",
"presence_penalty",
"response_format",
"seed",
"stop",
"stream",
"temperature",
"tool_choice",
"tools",
"top_p",
],
"provider": "saladcloud",
"ptbEnabled": false,
"regions": [
"*",
],
},
},
"anthropic/claude-3-haiku-20240307": {
"claude-3-haiku-20240307:anthropic": {
Expand Down Expand Up @@ -7311,6 +7383,9 @@ exports[`Registry Snapshots model coverage snapshot 1`] = `
"novita",
"novita",
"openrouter",
"saladcloud",
"saladcloud",
"saladcloud",
],
"anthropic/claude-3-haiku-20240307": [
"anthropic",
Expand Down Expand Up @@ -7789,6 +7864,13 @@ exports[`Registry Snapshots pricing snapshot 1`] = `
"threshold": 0,
},
],
"saladcloud": [
{
"input": 6e-8,
"output": 9e-8,
"threshold": 0,
},
],
},
"anthropic/claude-3-haiku-20240307": {
"anthropic": [
Expand Down Expand Up @@ -10813,6 +10895,24 @@ exports[`Registry Snapshots verify registry state 1`] = `
"novita",
],
},
{
"model": "qwen3.5-9b",
"providers": [
"saladcloud",
],
},
{
"model": "qwen3.6-27b",
"providers": [
"saladcloud",
],
},
{
"model": "qwen3.6-35b-a3b",
"providers": [
"saladcloud",
],
},
{
"model": "sonar",
"providers": [
Expand Down Expand Up @@ -10921,6 +11021,10 @@ exports[`Registry Snapshots verify registry state 1`] = `
"modelCount": 5,
"provider": "perplexity",
},
{
"modelCount": 3,
"provider": "saladcloud",
},
{
"modelCount": 23,
"provider": "vertex",
Expand Down Expand Up @@ -11049,9 +11153,9 @@ exports[`Registry Snapshots verify registry state 1`] = `
"claude-3.5-haiku:anthropic:*",
],
"totalArchivedConfigs": 0,
"totalEndpoints": 329,
"totalModelProviderConfigs": 329,
"totalEndpoints": 332,
"totalModelProviderConfigs": 332,
"totalModelsWithPtb": 108,
"totalProviders": 21,
"totalProviders": 22,
}
`;
5 changes: 5 additions & 0 deletions packages/__tests__/cost/usageProcessor.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ describe("getUsageProcessor", () => {
expect(processor).toBeInstanceOf(OpenAIUsageProcessor);
});

it("should return OpenAIUsageProcessor for saladcloud provider", () => {
const processor = getUsageProcessor("saladcloud");
expect(processor).toBeInstanceOf(OpenAIUsageProcessor);
});

it("should return null for unsupported provider", () => {
const processor = getUsageProcessor("unsupported-provider" as any);
expect(processor).toBeNull();
Expand Down
93 changes: 93 additions & 0 deletions packages/cost/models/authors/alibaba/qwen3/endpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,99 @@ export const endpoints = {
"*": {},
},
},
"qwen3.6-35b-a3b:saladcloud": {
providerModelId: "qwen3.6-35b-a3b",
provider: "saladcloud",
author: "qwen",
pricing: [
{
threshold: 0,
input: 0.00000009,
output: 0.0000006,
},
],
contextLength: 131_072,
maxCompletionTokens: 16_384,
supportedParameters: [
"tools",
"tool_choice",
"max_tokens",
"temperature",
"top_p",
"stop",
"frequency_penalty",
"presence_penalty",
"seed",
"response_format",
"stream",
],
ptbEnabled: false,
endpointConfigs: {
"*": {},
},
},
"qwen3.6-27b:saladcloud": {
providerModelId: "qwen3.6-27b",
provider: "saladcloud",
author: "qwen",
pricing: [
{
threshold: 0,
input: 0.0000003,
output: 0.0000012,
},
],
contextLength: 131_072,
maxCompletionTokens: 16_384,
supportedParameters: [
"tools",
"tool_choice",
"max_tokens",
"temperature",
"top_p",
"stop",
"frequency_penalty",
"presence_penalty",
"seed",
"response_format",
"stream",
],
ptbEnabled: false,
endpointConfigs: {
"*": {},
},
},
"qwen3.5-9b:saladcloud": {
providerModelId: "qwen3.5-9b",
provider: "saladcloud",
author: "qwen",
pricing: [
{
threshold: 0,
input: 0.00000006,
output: 0.00000009,
},
],
contextLength: 131_072,
maxCompletionTokens: 8_192,
supportedParameters: [
"tools",
"tool_choice",
"max_tokens",
"temperature",
"top_p",
"stop",
"frequency_penalty",
"presence_penalty",
"seed",
"response_format",
"stream",
],
ptbEnabled: false,
endpointConfigs: {
"*": {},
},
},
"qwen3-30b-a3b:deepinfra": {
providerModelId: "Qwen/Qwen3-30B-A3B",
provider: "deepinfra",
Expand Down
33 changes: 33 additions & 0 deletions packages/cost/models/authors/alibaba/qwen3/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,39 @@ export const models = {
modality: { inputs: ["text"], outputs: ["text"] },
tokenizer: "GPT",
},
"qwen3.6-35b-a3b": {
name: "Qwen3.6 35B A3B",
author: "qwen",
description:
"Qwen3.6 35B A3B is a Mixture-of-Experts model available through SaladCloud AI Gateway, recommended for agentic tasks, complex multi-step reasoning, code generation, and instruction following.",
contextLength: 131_072,
maxOutputTokens: 16_384,
created: "2026-03-26T07:00:00.000Z",
modality: { inputs: ["text"], outputs: ["text"] },
tokenizer: "Qwen",
},
"qwen3.6-27b": {
name: "Qwen3.6 27B",
author: "qwen",
description:
"Qwen3.6 27B is a dense general-purpose model available through SaladCloud AI Gateway, balancing capability and speed for chat and assistant workloads.",
contextLength: 131_072,
maxOutputTokens: 16_384,
created: "2026-03-26T07:00:00.000Z",
modality: { inputs: ["text"], outputs: ["text"] },
tokenizer: "Qwen",
},
"qwen3.5-9b": {
name: "Qwen3.5 9B",
author: "qwen",
description:
"Qwen3.5 9B is a fast, lightweight model available through SaladCloud AI Gateway for high-volume queries, simple Q&A, and low-latency responses.",
contextLength: 131_072,
maxOutputTokens: 8_192,
created: "2026-03-26T07:00:00.000Z",
modality: { inputs: ["text"], outputs: ["text"] },
tokenizer: "Qwen",
},
"qwen3-30b-a3b": {
name: "Qwen3 30B A3B",
author: "qwen",
Expand Down
10 changes: 10 additions & 0 deletions packages/cost/models/provider-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ export function heliconeProviderToModelProviderName(
return "fireworks";
case "CANOPYWAVE":
return "canopywave";
case "saladcloud":
return "saladcloud";
// new registry does not have
case "LOCAL":
case "HELICONE":
Expand Down Expand Up @@ -159,6 +161,14 @@ export const dbProviderToProvider = (
if (provider === "nebius" || provider === "Nebius") {
return "nebius";
}
if (
provider === "saladcloud" ||
provider === "salad_cloud" ||
provider === "SaladCloud" ||
provider === "Salad Cloud"
) {
return "saladcloud";
}
return null;
};

Expand Down
Loading