ドキュメント

baseURL を差し替えるだけで、既存の OpenAI クライアントが動きます。

無料で試す

登録不要で HAI のレイテンシと SDK 互換性を体験できます。下のボタンからトライアルキーを発行してください。

Trial Quick start
from openai import OpenAI

client = OpenAI(
    base_url="https://hai-api.hcloud.ltd/v1",
    api_key="hai_test_...",
)

resp = client.chat.completions.create(
    model="test",
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)

フルモデル(Kimi K3 / Kimi K2.6 / DeepSeek V4)は コンソール から。

制約(透明性)

項目内容
モデルtest(動作確認・レイテンシ体感用。出力と入力に下記の上限あり)
リクエスト総量50 req / キー
レート3 rpm
有効期限24 時間
出力上限512 tokens(超過分は finish_reason: length)
入力上限約 8K トークン相当(24,000 文字)
混雑時429 + retry-after(OpenAI / Anthropic SDK は自動リトライ)

Claude Code / Codex はトライアル対象外です。コンテキスト要件が大きいため、本番モデル(kimi-k3 等)でご利用ください → コンソールへ

curl / TypeScript

curl https://hai-api.hcloud.ltd/v1/chat/completions \
  -H "Authorization: Bearer hai_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "test",
    "messages": [{"role":"user","content":"こんにちは"}]
  }'
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://hai-api.hcloud.ltd/v1",
  apiKey: "hai_test_...",
});

const resp = await client.chat.completions.create({
  model: "test",
  messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);

エンドポイント

https://hai-api.hcloud.ltd/v1

提供 API: /v1/chat/completions / /v1/responses / /v1/messages(Anthropic 互換) / /v1/models / /v1/embeddings埋め込み) / /v1/videos動画生成

出力上限(max_tokens / max_completion_tokens / max_output_tokens)に 1 以上 3 未満を指定した場合は 3 として扱います (極端に小さい上限でも安定して応答を返すためです)。 自社 GPU で運用するモデル(qwen3.8-27b-uncensored / llm-jp-4-vl-9b)では、モデルの出力上限を超える値は出力上限として扱います。 指定を省略した場合に上限が付くことはありません。

Python

from openai import OpenAI

client = OpenAI(
    base_url="https://hai-api.hcloud.ltd/v1",
    api_key="hai_...",
)

resp = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)

TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://hai-api.hcloud.ltd/v1",
  apiKey: "hai_...",
});

const resp = await client.chat.completions.create({
  model: "kimi-k2.6",
  messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);

curl

curl https://hai-api.hcloud.ltd/v1/chat/completions \
  -H "Authorization: Bearer hai_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [{"role":"user","content":"こんにちは"}]
  }'

Claude Code

Anthropic 互換の /v1/messages を提供しているため、環境変数の設定だけで Claude Code から HAI のモデルを利用できます。トライアル(model test)はコンテキスト上限が小さいため Claude Code での利用はおすすめしません。本番モデルと有料キーでご利用ください。

使うモデルに合わせて ~/.claude/settings.json を生成するなら クライアント設定ジェネレーター を使ってください。

export ANTHROPIC_BASE_URL=https://hai-api.hcloud.ltd
export ANTHROPIC_AUTH_TOKEN=hai_...
export ANTHROPIC_MODEL=kimi-k3
export ANTHROPIC_SMALL_FAST_MODEL=deepseek-v4-flash
claude

Codex CLI

OpenAI Responses API 互換の /v1/responses に対応しています。トライアルは対象外です(本番モデル + 有料キー)。~/.codex/config.toml に以下を追記してください。 モデルを切り替える場合の設定は クライアント設定ジェネレーター で生成できます。

model_provider = "hai"
model = "kimi-k3"

[model_providers.hai]
name = "HAI"
base_url = "https://hai-api.hcloud.ltd/v1"
env_key = "HAI_API_KEY"
wire_api = "responses"
export HAI_API_KEY=hai_...
codex

config.toml を書き換えずに試す場合は、-c オプションで同じ設定を渡せます。

codex exec --skip-git-repo-check \
  -c model_provider=hai \
  -c 'model_providers.hai.name=HAI' \
  -c 'model_providers.hai.base_url=https://hai-api.hcloud.ltd/v1' \
  -c 'model_providers.hai.env_key=HAI_API_KEY' \
  -c 'model_providers.hai.wire_api=responses' \
  -c model=kimi-k3 \
  "こんにちは"

思考(Reasoning)

提供モデルは思考(reasoning)に対応しており、思考の内容と使用トークン数が各 API のレスポンスに含まれます。OpenAI SDK・Claude Code・Codex CLI のいずれからも追加設定なしで利用できます。

APIリクエスト思考内容の返却先
/v1/chat/completionsreasoning_effortmessage.reasoning_content
/v1/responses(Codex)reasoning: { effort }type: "reasoning" の出力アイテム
/v1/messages(Claude Code)thinkingthinking コンテンツブロック

モデル ID

テキスト生成のモデル ID です。埋め込みのモデルは 埋め込み(/v1/embeddings)、動画生成のモデルは 動画生成(/v1/videos) に記載しています。

モデル IDモデル名精度入力出力上限reasoning_effort
kimi-k3Kimi K3TEEFP8テキスト / 画像65,535none / minimal / low / medium / high / xhigh
qwen3.8-2.4t-a95bQwen3.8 2.4T-A95BTEEFP4テキスト65,536minimal / low / medium / high / xhigh
glm-5.3GLM-5.3自社DCFP8テキスト128,000minimal / low / medium / high / xhigh
kimi-k2.6Kimi K2.6自社DCFP8テキスト / 画像16,384none / minimal / low / medium / high / xhigh
qwen3.8-27bQwen3.8 27B自社DCBF16テキスト / 画像 / 動画32,768none / minimal / low / medium / high / xhigh
qwen3.8-27b-uncensoredQwen3.8 27B Uncensored自社DCFP8テキスト / 画像16,384none / minimal / low / medium / high / xhigh
deepseek-v4.1-flashDeepSeek V4.1 Flash自社DCFP8テキスト / 画像384,000none / minimal / low / medium / high / xhigh
gemma-4-31b-itGemma 4 31B自社DCFP8テキスト / 画像 / 動画8,192none / minimal / low / medium / high / xhigh
llm-jp-4-vl-9bLLM-jp-4-VL 9B自社DCBF16テキスト / 画像8,192none / minimal / low / medium / high / xhigh
qwen3.6-35b-a3bQwen3.6 35B-A3B自社DCFP8テキスト / 画像 / 動画16,384none / minimal / low / medium / high / xhigh
deepseek-v4-flashDeepSeek V4 Flash自社DCFP8テキスト32,768none / minimal / low / medium / high / xhigh
glm-5.3-flashGLM-5.3 Flash自社DCFP8テキスト / 画像 / 動画2,048none / minimal / low / medium / high / xhigh

「出力上限」は 1 リクエストで生成できるトークン数の上限です。コンテキスト長 (入力 + 出力の合計)は料金に記載しています。reasoning_effort は実際にリクエストを通して受け付けを確認した値です。設定ファイルの形で欲しい場合は クライアント設定 から生成できます。

掲載してほしいモデルがあればモデルのリクエストから教えてください。ご意見箱扱いとなるため、こちらでは返信いたしません。

テキスト生成モデルの出力はテキストのみです。画像を受け付けるモデルには、 OpenAI 互換の content 配列で image_url(Responses API では input_image、Anthropic 互換では image ブロック)を渡せます。テキストのみのモデルに画像を送るとエラーを返します。

埋め込み(/v1/embeddings)

埋め込みは /v1/embeddings です。テキスト生成とは別サーフェスのため、これらのモデル ID は GET /v1/models には含まれません(GET /v1/embeddings/models で対応モデルと次元を確認できます)。トライアルキーは対象外です。

モデル IDモデル名精度次元
qwen3-embedding-8bQwen3 Embedding 8B自社DCQ84,096
32〜4096 で指定可
from openai import OpenAI

client = OpenAI(
    base_url="https://hai-api.hcloud.ltd/v1",
    api_key="hai_...",
)

resp = client.embeddings.create(
    model="qwen3-embedding-8b",
    input=["テキストをベクトルにする", "複数まとめて送れます"],
)
print(len(resp.data[0].embedding))  # 4096
curl https://hai-api.hcloud.ltd/v1/embeddings \
  -H "Authorization: Bearer hai_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3-embedding-8b",
    "input": "テキストをベクトルにする"
  }'

動画生成(/v1/videos)

動画生成は /v1/videos です。テキスト生成とは別サーフェスのため、これらのモデル ID は GET /v1/models には含まれません(GET /v1/videos/models で対応モデルと単価を確認できます)。トライアルキーは対象外です(本番モデル + 有料キー)。

モデル IDモデル名仕様
minimax-h3MiniMax H3自社DC解像度 2K / 長さ 5〜15 秒 / 音声あり(既定 ON)
アスペクト比 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16
参照画像 最大 2 枚

生成は分単位の非同期ジョブです。POST /v1/videos が 202 でジョブ ID を返し、GET /v1/videos/{id} で完了を確認してから GET /v1/videos/{id}/content で mp4 を取得します。OpenAI Video API 互換の形なので、OpenAI SDK の videos.create / videos.retrieve / videos.download_content がそのまま使えます。

curl https://hai-api.hcloud.ltd/v1/videos \
  -H "Authorization: Bearer hai_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax-h3",
    "prompt": "A product spin on a clean white table, soft studio light",
    "seconds": 5,
    "aspect_ratio": "16:9"
  }'
# 完了確認(status が completed になるまで繰り返す)
curl https://hai-api.hcloud.ltd/v1/videos/<id> \
  -H "Authorization: Bearer hai_..."

# mp4 の取得
curl -L https://hai-api.hcloud.ltd/v1/videos/<id>/content \
  -H "Authorization: Bearer hai_..." \
  -o out.mp4
import time
from openai import OpenAI

client = OpenAI(
    base_url="https://hai-api.hcloud.ltd/v1",
    api_key="hai_...",
)

video = client.videos.create(
    model="minimax-h3",
    prompt="A product spin on a clean white table",
    seconds="5",
)
while video.status in ("pending", "in_progress"):
    time.sleep(10)
    video = client.videos.retrieve(video.id)

client.videos.download_content(video.id).write_to_file("out.mp4")
パラメータ内容
prompt生成内容のテキスト(必須)
seconds尺(整数秒。文字列も可)。省略時は最短尺。duration も同義で受け付けます
aspect_ratio上の表のアスペクト比から選びます(省略時 16:9
input_reference参照画像 1 枚。https URL または画像ファイル
input_references参照画像の配列([{ "type": "image", "url": "https://…" }])。https URL のみ
frame_images開始・終了フレームの指定({ "type": "first_frame" | "last_frame", "image_url": "…" }
generate_audio音声を同時に生成するか(既定 true)

Account API(残高・利用状況の参照)

API キーに account:read 権限を付けると、残高やクレジットの有効期限、利用状況を API から参照できます。コンソールの「API キー」画面で、キーの作成時にチェックするか、既存のキーに後から付与してください。既定はオフです。

ベース URL は推論と同じ https://hai-api.hcloud.ltd です(/v1 は付きません)。認証は Authorization: Bearer のみで、x-api-key は使えません。

curl https://hai-api.hcloud.ltd/api/credits \
  -H "Authorization: Bearer $HAI_API_KEY"

curl 'https://hai-api.hcloud.ltd/api/usage?from=2026-08-01T00:00:00Z' \
  -H "Authorization: Bearer $HAI_API_KEY"
エンドポイント内容
GET /api/meユーザー情報と残高
GET /api/credits残高とクレジットロット一覧(発行日・失効日・残額)
GET /api/keysAPI キーの一覧(キー本体は返しません)と権限
GET /api/usage期間の集計・モデル別内訳・新しい順 200 件の明細
GET /api/usage/exportUTC 月次の明細 CSV(year / month

課金について

HAI Go(定額プラン)

定額プラン HAI Go(月額 ¥1,980・税込)または HAI Go Plus(月額 ¥4,980・税込) に加入すると、対象モデルを利用枠まで定額でご利用いただけます。 API の使い方は変わりません(同じキー・同じエンドポイントで、 残高の代わりに定額枠が適用されます)。

よくある質問

既存の OpenAI SDK のコードはそのまま動きますか。

baseURL と API キーを差し替えるだけで動きます。/v1/chat/completions/v1/responses/v1/models に加えて Anthropic 互換の /v1/messages も提供しているため、Claude Code や Codex CLI からも利用できます。

残高や利用状況をプログラムから取得できますか。

API キーに account:read 権限を付けると、残高・クレジットの有効期限・利用状況を参照できます。既定はオフで、コンソールから付与します。参照専用のため、チャージやキーの作成・無効化はこの権限では行えません(コンソールからのみ操作できます)。

使いたいモデルが見つかりません。

モデルのリクエストから教えてください。ご意見箱扱いとなるため、こちらでは返信いたしません。品揃えの検討に使います。障害や契約の話は右下のサポートからお問い合わせください。

ブラウザから直接呼び出せますか。

想定していません。CORS ヘッダーを返さないため、サーバーまたは CLI から呼び出してください。ブラウザ側のコードに API キーを置くと第三者に読み取られます。

推論の実施場所・ZDR・個人情報保護法上の整理についてはよくある質問セキュリティをご覧ください。