始めよう

API クイックスタート

Ninja の API を使い始めて、比類のないスピード、スケーラビリティ、信頼性で AI 製品を強化しましょう。

さらに詳しく

登録

でサインアップ スーパー・マイ・ニンジャ・アイ 当社の API の使用を開始してください。

無料でサインアップすることも、UltraまたはBusiness階層に登録することもできます。UltraとBusinessでは、Playground に無制限にアクセスして、主力製品、推論、ディープ・リサーチのLLMを試してみることができます。*

探索から実行に移す準備ができたら、クレジットを購入して、コーディングやライティングなどのための AI 製品やエクスペリエンスの構築を始めましょう。

* 悪用閾値の対象

クレジットを購入

  • サインアップ後 スーパー・マイ・ニンジャ・アイ、左側のパネルに移動して API アイコン

    Image of user navigating to the api management page
  • 次に、 「サブスクリプションとクレジット」

    Image of user navigating to the API keys & credits page
  • アンダー 「あなたのクレジット」 クリック 「クレジットを購入」

    Image of the API credits section in Ninja AI
  • の中に 「自動支払い金額」 フィールドに、クレジットとして購入したい金額を入力します (最低30ドル)

    Image of a user setting their credit amount for their auto-pay agreement in Ninja AI
  • の中に 「自動支払い基準額」 フィールドで、残高がこの金額を下回ったときにリロードするしきい値を設定します 「自動支払い金額」。これにより、クレジットが不足したり、API キーが機能しなくなったりすることがなくなります。 (最低25ドル)

    Image of a user setting their threshold amount for their auto-pay agreement in Ninja AI
  • ご希望のお支払い方法を選択し、クリックしてください 「確認して支払う。」 その後、Stripe の請求画面にリダイレクトされ、支払いを完了します。

    Image of different payment vendors provided to users when purchasing API credits

API キーを生成する

  • クレジットを購入したら、 「API キーの管理」 のセクション API キーとクレジットページ

    Image of user navigating to the API keys & credits page
  • をクリックします 「新しいキーを作成」 ボタン。

    Image of manage your API keys section in Ninja AI
  • の中に 「名前」 フィールドに、キーの名前を入力します (例: プロダクションキー) をクリックしてクリック 「キーを作成」

    Image of naming process for an API key generated by Ninja AI
  • キーが生成されると、 コピーして アクセスできる人なら誰でも使用できるので、安全な場所に保存してください。必要な場合は、 再生する 新しい鍵。

    Image of an API key generated with Ninja AI

ニンジャ API を使用する

オーバービュー

ベース URL:
https://api.myninja.ai/v1

認証:
すべてのリクエストには、以下のようにヘッダーに API キーを渡す必要があります。<token-key>認証トークンはここにあります。
権限:ベアラー <token-key>

エンドポイント:
ポスト /チャット/完了
このエンドポイントは、指定されたモデルに基づいてチャットリクエストを受け付け、応答をストリーミングします。

モデル:
現在入手可能なモデルには以下が含まれます。
ニンジャ・ディープ・リサーチ
忍者スーパーエージェント:ターボ
ニンジャ・スーパー・エージェント:アペックス
忍者スーパーエージェント:推論

これらのモデルは、以下を提供することで選択できます リクエスト本文のパラメータ。

リクエストフォーマット

Ninja API は以下のようになります。 OpenAI API スペック 密接に。リクエスト JSON オブジェクトには以下が含まれます。

モデル (文字列):
使用するモデル識別子 (例: 「ニンジャ・ディープ・リサーチ」)。

メッセージ (配列):
メッセージオブジェクトの配列。各オブジェクトは次の形式に従います。

JSON

{ "role": "user", "content": "Your query here." }
  

ストリーム (ブーリアン):
に設定した場合 本当、API はストリーミング応答で応答します。

ストリームオプション (オブジェクト):
ストリーミング用の追加オプション (例: 「include_usage」: true トークンの使用状況の詳細を含めます。

追加ヘッダー (オブジェクト):
Ninja API に必要な追加ヘッダー (現時点ではなし)

リクエスト例 (json)

JSON

{
  "model": "ninja-super-agent:turbo",
  "messages": [
    {
      "role": "user",
      "content": "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
    }
  ],
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}
  

応答

API は次のストリームを返します。 チャット完了チャンク オブジェクト。各チャンクには以下が含まれる場合があります。

コンテンツ:
補完文のテキスト。XML 形式の推論ステップが含まれる場合があります。

引用:
提供された理由を裏付けるURLのリスト。

使用情報:
トークンの使用状況統計 「include_usage」: true 指定されました。

クライアントコードはこれらのチャンクを処理して、次のような豊富なレスポンスを表示できます。

推論ステップ: XML セグメントから抽出およびフォーマットされます。

引用: 番号付きリストとして表示されます。

使用統計: 入力トークンと出力トークンを表示します。

サンプルコード例

Python

import time
import xml.etree.ElementTree as ET
from uuid import uuid4
from openai import OpenAI, Stream
from openai.types import CompletionUsage
from openai.types.chat import ChatCompletionChunk

# Initialize the OpenAI client with your API key and base URL.
client = OpenAI(api_key="PUT_YOUR_API_KEY_HERE", base_url="https://api.myninja.ai/v1")

def print_reasoning_step(reasoning_step: str):
    step = ET.fromstring(reasoning_step)
    print(f"[{step.find('header').text}]\n{step.find('content').text}\n")

def print_citations(citations: list[str]):
    width = len(str(len(citations)))
    print("[Citations]")
    for n, citation in enumerate(citations, 1):
        print(f"{n:{width}}. {citation}")
    print()

def print_content(content: str):
    print(content, end="", flush=True)

def print_usage(usage: CompletionUsage):
    print(
        f"\n\n| Input tokens: {usage.prompt_tokens:,} "
        f"| Output tokens: {usage.completion_tokens:,} ",
        end="",
        flush=True,
    )

def main():
    query = (
        "I am an advanced snowboarder and want a good all-mountain snowboard and new boots and "
        "I'd like to spend no more than $1000 all in. Also look at trends and reviews and give "
        "me options that are currently trendy and cool and have high reviews."
    )

    start_time = time.time()
    
    response: Stream[ChatCompletionChunk] = client.chat.completions.create(
        model="ninja-deep-research",
        messages=[
            {"role": "user", "content": query},
        ],
        stream=True,
        stream_options={
            "include_usage": True,
        },
    )

    for chunk in response:
        for choice in chunk.choices:
            if content := choice.delta.content:
                if content.startswith("<step>"):
                    print_reasoning_step(content)
                else:
                    print_content(content)

        if citations := chunk.model_extra.get("citations"):
            print_citations(citations)
        elif usage := chunk.usage:
            print_usage(usage)

    elapsed_time = time.time() - start_time
    print(f"| Elapsed: {elapsed_time:.1f} seconds |")

if __name__ == "__main__":
    main()
  
cURL

curl -N https://api.myninja.ai/v1/chat/completions \
  -H "Authorization: Bearer PUT_YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ninja-super-agent:turbo",
    "messages": [
      {
        "role": "user",
        "content": "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
      }
    ],
    "stream": true,
    "stream_options": {
      "include_usage": true
    }
  }'
Java

HttpResponse<String> response = Unirest.post("https://api.myninja.ai/v1/chat/completions")
  .header("Authorization", "Bearer PUT_YOUR_API_KEY_HERE")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
  
JavaScript

const options = {
  method: 'POST',
  headers: {
    Authorization: 'Bearer PUT_YOUR_API_KEY_HERE',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: "ninja-super-agent:turbo",
    messages: [
      {
        role: "user",
        content: "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
      }
    ],
    stream: true,
    stream_options: {
      include_usage: true
    }
  })
};

fetch('https://api.myninja.ai/v1/chat/completions', options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
  
Go

package main

import (
  "bufio"
  "bytes"
  "fmt"
  "io"
  "log"
  "net/http"
)

func main() {
  url := "https://api.myninja.ai/v1/chat/completions"

  jsonStr := ` + "`" + `{
    "model": "ninja-super-agent:turbo",
    "messages": [
      {
        "role": "user",
        "content": "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?"
      }
    ],
    "stream": true,
    "stream_options": {
      "include_usage": true
    }
  }` + "`" + `

  req, err := http.NewRequest("POST", url, bytes.NewBuffer([]byte(jsonStr)))
  if err != nil {
    log.Fatalf("Error creating request: %v", err)
  }

  req.Header.Set("Authorization", "Bearer PUT_YOUR_API_KEY_HERE")
  req.Header.Set("Content-Type", "application/json")

  client := &http.Client{}
  resp, err := client.Do(req)
  if err != nil {
    log.Fatalf("Error sending request: %v", err)
  }
  defer resp.Body.Close()

  if resp.StatusCode != http.StatusOK {
    log.Fatalf("Request failed with status: %s", resp.Status)
  }

  reader := bufio.NewReader(resp.Body)
  for {
    line, err := reader.ReadBytes('\n')
    if err != nil {
      if err == io.EOF {
        break
      }
      log.Fatalf("Error reading response: %v", err)
    }
    fmt.Print(string(line))
  }
}
  
C#

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

namespace NinjaApiExample
{
  class Program
  {
    static async Task Main(string[] args)
    {
      var url = "https://api.myninja.ai/v1/chat/completions";
      var apiKey = "PUT_YOUR_API_KEY_HERE";

      using var client = new HttpClient();
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

      var payload = new
      {
        model = "ninja-super-agent:turbo",
        messages = new[]
        {
          new { role = "user", content = "What is the significance of birefringence in materials science? Can you provide a detailed explanation including its applications and how it is measured?" }
        },
        stream = true,
        stream_options = new { include_usage = true }
      };

      var jsonPayload = JsonSerializer.Serialize(payload);
      var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

      try
      {
        var response = await client.PostAsync(url, content);
        response.EnsureSuccessStatusCode();

        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
      }
      catch (HttpRequestException e)
      {
        Console.WriteLine("Request error: " + e.Message);
      }
    }
  }
}
  

価格設定

モード

価格を入力/ M トークンあたり

出力価格/ M トークンあたり

価格/ 仕事

クイーン 3 コーダー 480B (セレブラス)

ニンジャクラインAIスタジオのデフォルト

1.50

標準モード

品質とスピードのバランス
デフォルト:
グラム 4.6
ディープコーダー:
グラム 4.6

1.00

コンプレックスモード

複雑なタスクに対応する最高品質のLLM
デフォルト:
ソネット 4.5
ディープコーダー
ソネット 4.5

1.50

ファーストモード

世界最速のジェネラルエージェント
デフォルト:
グラム 4.6*
ディープ・リサーチ:
Qwen Model Logo
クウェン 3—235B*
ディープコーダー:
グラム 4.6
*セレブラスを搭載
Cerebras logo

1.50

モード

価格を入力/ M トークンあたり

出力価格/ M トークンあたり

価格/ 仕事

クイーン 3 コーダー 480B (セレブラス)

ニンジャクラインAIスタジオのデフォルト

3.75ドル

3.75ドル

標準モード

品質とスピードのバランス
デフォルト:
グラム 4.6
ディープコーダー:
グラム 4.6

1.50

1.50

コンプレックスモード

複雑なタスクに対応する最高品質のLLM
デフォルト:
ソネット 4.5
ディープコーダー
ソネット 4.5

4.50ドル

22.50

ファーストモード

世界最速のジェネラルエージェント
デフォルト:
グラム 4.6*
ディープ・リサーチ:
Qwen Model Logo
クウェン 3—235B*
ディープコーダー:
グラム 4.6
*セレブラスを搭載
Cerebras logo

3.75ドル

3.75ドル

モデル

価格を入力/ M トークンあたり

出力価格/ M トークンあたり

ターボ 1.0

0.11ドル

0.42ドル

アペックス 1.0

0.88

7.00

推論2.0

0.38ドル

1.53ドル

ディープリサーチ 2.0

1.40

5.60ドル

レート制限

Ninja AI は、開発者が最速の推論を試せるように、モデルごとの推論リクエストにレート制限を設けています。

モデル

1 分あたりのリクエスト数 (回転数)

ターボ 1.0

50

アペックス 1.0

20

推論2.0

30

ディープリサーチ 2.0

5

よくあるご質問

Ninjaの API について、よく聞かれる質問に基づいて知っておくべきことを次に示します。

自動支払いの基準額と金額を増やすにはどうすればいいですか?

  • Ninjaでは、左側のパネルに移動して、 API 管理アイコン

  • アンダー 「あなたのクレジット」 クリック 「クレジットの管理」

  • の中に 「自動支払い金額」 フィールドに、クレジットを増やしたい金額を入力します (最低30ドル)

  • の中に 「自動支払い基準額」 フィールドで、残高がこの金額を下回ったときにリロードされるしきい値を編集します 「自動支払い金額」。これにより、クレジットが不足したり、API キーが機能しなくなったりすることがなくなります (最低 25 ドル)。

  • クリック 「変更を保存」 確認のため。

自動支払い契約をキャンセルするにはどうすればいいですか?

  • Ninjaでは、左側のパネルに移動して、 API 管理アイコン

  • [選択] 「API キーとクレジット」 それから 「あなたのクレジット」 セクション。

  • アンダー 「あなたのクレジット」 クリック 「その他のオプション」

  • [選択] 「クレジットの自動支払いをキャンセル」(最低30ドル)

  • クリック 「自動支払いを削除」 確認のため。

API キーを削除するにはどうすればいいですか?

  • Ninjaでは、左側のパネルに移動して、 API 管理アイコン

  • [選択] 「API キーとクレジット」 それから 「API キー」

  • API キーを見つけて、右側のゴミ箱アイコンを選択します。

  • クリック 「API キーを削除する」 確認のため。

各 API リクエストの使用状況を確認する方法を教えてください。

  • Ninjaでは、左側のパネルに移動して、 API 管理アイコン

  • 次にクリック 「API の使用状況」

  • 「API の使用状況」 ページには、各 API の次の詳細を示す表が表示されます。

    • キー名

    • モデル

    • 入力トークンと出力トークン

    • 入力コストと出力コスト

    • リクエストのタイムスタンプ

    • 総費用