API ドキュメント

quonel のAIツールは、すべて共通のAPIから使えます。認証キーを添えてJSONをPOSTするだけ。

概要

ベースURLhttps://api.quonel.com

リクエスト・レスポンスはいずれも application/json。すべてのツールが同じ認証・同じ作法で使えます。

POST /inbox  問い合わせ一次対応

POST /classify  テキスト分類

POST /review  レビュー分析

POST /summarize  要約

POST /translate  翻訳

POST /rewrite  整文・リライト

認証

発行された API キーを Authorization ヘッダに付けます。キーはお問い合わせで発行します。

authorization
Authorization: Bearer <YOUR_API_KEY>
キーが無い・誤っている場合は 401 unauthorized を返します。キーはサーバ側で安全に保管し、ブラウザなど公開環境に置かないでください。

問い合わせ一次対応

POST /inbox

問い合わせ本文から、カテゴリ分類優先度一次返信の下書きをまとめて生成します。

リクエスト

フィールド説明
textstring問い合わせ本文(必須)
categoriesstring[]分類ラベル(任意・既定=請求/配送/アカウント/不具合/その他)
prioritiesstring[]優先度ラベル(任意・既定=高/中/低)
draftboolean返信ドラフトを作るか(任意・既定 true)
guidestring自社の対応方針・トーン・禁止事項(任意)。下書きに反映(最大800字)
glossarystring[]用語・表記の指定(任意・最大40件)。例 ["返品→ご返品","客→お客様"]。下書きが表記に従う
templatesobjectカテゴリ別の定型文(任意)。例 {"配送":"配送状況を確認します…"}。分類結果のカテゴリに一致する定型文を下書きの土台に反映(応答の draft.template_used で反映有無)
limit_usdnumberこのリクエストのコスト上限(任意)

guide/glossary は下書きの固定プレフィックスに入り、指定ごとにキャッシュが分離されます(別方針の下書きを誤って再利用しません)。/inbox/batch でも同じ2項目を指定できます。

POST /inbox
curl -X POST https://api.quonel.com/inbox \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"text":"先週注文した商品がまだ届きません。急いでいます。"}'

{
  "category": {"label": "配送", "confidence": 1.0, "source": "rule"},
  "priority": {"label": "高", "confidence": 0.65, "source": "miss"},
  "draft": {"text": "お問い合わせありがとうございます。配送状況を確認しますので…", "source": "miss"},
  "degraded": false
}

まとめて仕分け(バルク処理)

POST /inbox/batch

大量の問い合わせをまとめてカテゴリ+優先度で仕分け(最大200件)。ドラフトは既定OFF(draft:true で個別生成/draft_batch:true で残差を1コールに束ねてコスト優先=要レビュー前提)。バックログの一括トリアージ向け。

POST /inbox/batch
curl -X POST https://api.quonel.com/inbox/batch \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"texts":["商品が届かない","解約したい","二重請求されました"]}'

{
  "results": [
    {"text": "商品が届かない", "category": {"label": "配送", ...}, "priority": {"label": "高", ...}},
    ...
  ],
  "count": 3,
  "batched": {"messages": 3, "category": {"ai_calls": 1}, "priority": {"ai_calls": 1}}
}

頻出質問の抽出

POST /inbox/faq

問い合わせ群を似た内容でクラスタリングし、多い順に代表文+件数を返します(最大200件)。既定は追加のAI生成なし(埋め込みのみ・キャッシュ経由)。よくある質問を templates(カテゴリ別定型文)や guide に落とし込む起点に。任意で threshold(0.5–0.99)・topmin_sizesuggest:true で各クラスタの再利用可能な定型文(プレースホルダ入り)1コールに束ねて生成し clusters[].suggested_template に付与。

POST /inbox/faq
curl -X POST https://api.quonel.com/inbox/faq \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"texts":["荷物が届かない","まだ届きません","解約したい"]}'

{
  "total": 3,
  "clusters": [
    {"size": 2, "share": 0.667, "representative": "荷物が届かない", "members": [0, 1]}
  ],
  "clustered": 2, "singletons": 1, "degraded": false, "threshold": 0.82
}

テキスト分類

POST /classify

テキストを、指定したラベルのいずれかに分類します。タグ付け・仕分け・モデレーションなどに。

リクエスト

フィールド説明
textstring分類対象(必須)
labelsstring[]ラベル候補(必須・2件以上)
limit_usdnumberコスト上限(任意)
POST /classify
curl -X POST https://api.quonel.com/classify \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"text":"荷物がまだ届きません","labels":["請求・支払い","配送","その他"]}'

{
  "value": {"label": "配送", "confidence": 0.9},
  "confidence": 0.9,
  "source": "miss",
  "degraded": false,
  "flags": []
}

まとめて分類(バルク処理)

POST /classify/batch

複数テキストをまとめて分類(最大200件)。キャッシュ/ルールで解けない残差だけを1コールに束ねるためAPI最小・低コスト。結果は単発 /classify とキャッシュ共有。フィールドは texts(string[]・必須)+labels(必須・2件以上)。

POST /classify/batch
curl -X POST https://api.quonel.com/classify/batch \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"texts":["荷物が届かない","二重請求されました"],"labels":["請求・支払い","配送","その他"]}'

{
  "results": [
    {"value": {"label": "配送", "confidence": 0.9}, "source": "miss", "degraded": false},
    {"value": {"label": "請求・支払い", "confidence": 0.9}, "source": "rule", "degraded": false}
  ],
  "batched": {"total": 2, "reused_no_ai": 1, "residual_bundled_in_1_call": 1}
}

レビュー分析

POST /review

複数のレビューをまとめて分析し、各レビューの感情観点、全体の集計観点×感情のクロス集計、観点ごとの代表コメントを返します(1回のリクエストで最大300件。内部で50件ごとにまとめて処理)。

リクエスト

フィールド説明
reviewsstring[]レビュー本文の配列(必須・最大300件)
aspectsstring[]観点ラベル(任意・既定=品質/価格/接客・対応/配送/使いやすさ/その他)
datesstring[]reviews と同順の日付 YYYY-MM-DD(任意)。渡すと感情の時系列トレンドを返す(AI追加なし)
trend_bucketstringトレンドの粒度 day/week/month(既定 month)
limit_usdnumberコスト上限(任意)

dates を渡した場合の追加レスポンス(バケット昇順・net_sentiment は −1〜+1):

trend(抜粋)
{
  "trend": {
    "granularity": "month",
    "buckets": [
      {"bucket": "2026-05", "total": 120, "sentiment": {"ポジティブ": 80, "中立": 20, "ネガティブ": 20}, "net_sentiment": 0.5},
      {"bucket": "2026-06", "total": 98,  "sentiment": {"ポジティブ": 40, "中立": 18, "ネガティブ": 40}, "net_sentiment": 0.0}
    ],
    "labeled": 218, "unlabeled": 2
  }
}
POST /review
curl -X POST https://api.quonel.com/review \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"reviews":["梱包も丁寧で大満足","配送が遅くて困りました"]}'

{
  "summary": {
    "total": 2,
    "sentiment": {"ポジティブ": 1, "中立": 0, "ネガティブ": 1},
    "aspect": {"品質": 1, "配送": 1, "価格": 0, ...}
  },
  "by_aspect": {
    "品質": {"total": 1, "ポジティブ": 1, "中立": 0, "ネガティブ": 0},
    "配送": {"total": 1, "ポジティブ": 0, "中立": 0, "ネガティブ": 1}
  },
  "representatives": {
    "品質": {"review": "梱包も丁寧で大満足", "sentiment": "ポジティブ"},
    "配送": {"review": "配送が遅くて困りました", "sentiment": "ネガティブ"}
  },
  "results": [
    {"review": "梱包も丁寧で大満足", "sentiment": "ポジティブ", "aspect": "品質"},
    {"review": "配送が遅くて困りました", "sentiment": "ネガティブ", "aspect": "配送"}
  ],
  "chunks": {"total": 1, "chunk_size": 50, "ai_calls": 1}
}

要約

POST /summarize

長文テキストを要約し、要点(箇条書き)を返します。長い文章は段落・文の境界で自動的に分割し、各部分を要約してから統合します(1回のリクエストで最大約50000文字)。

リクエスト

フィールド説明
textstring要約対象の文章(必須・最大50000文字)
limit_usdnumberコスト上限(任意)
POST /summarize
curl -X POST https://api.quonel.com/summarize \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"text":"(要約したい長い文章)"}'

{
  "summary": "文章全体の要約。",
  "bullets": ["重要な要点1", "重要な要点2"],
  "chunks": 1,
  "source": "miss",
  "degraded": false
}

翻訳

POST /translate

テキストを指定した言語へ翻訳します(1回のリクエストで最大約8000文字)。対象言語はキャッシュ鍵に含まれ、同一文+同一言語は再利用されます。対応言語の一覧は GET /translate/langs

リクエスト

フィールド説明
textstring翻訳対象の文章(必須・最大8000文字)
targetstring対象言語コード(既定 en)。例 en/ja/zh/zh-TW/ko/fr/es/de/pt/th/vi/id。未対応は英語にフォールバック
limit_usdnumberコスト上限(任意)
POST /translate
curl -X POST https://api.quonel.com/translate \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"text":"お問い合わせありがとうございます。","target":"en"}'

{
  "translation": "Thank you for your inquiry.",
  "target": "en",
  "target_name": "英語 (English)",
  "source": "miss",
  "degraded": false
}

整文・リライト

POST /rewrite

文章を、意味を保ったまま整えます(1回のリクエストで最大約8000文字)。モードは polite(丁寧・敬語に)/concise(簡潔に)/friendly(やわらかく)/proofread(校正)。モードはキャッシュ鍵に含まれ、モードごとに再利用が分離されます。一覧は GET /rewrite/modes

リクエスト

フィールド説明
textstring整える対象の文章(必須・最大8000文字)
modestring整え方(既定 polite)。未対応は polite にフォールバック
limit_usdnumberコスト上限(任意)
POST /rewrite
curl -X POST https://api.quonel.com/rewrite \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"text":"これ確認しといて。よろしく","mode":"polite"}'

{
  "result": "こちらをご確認いただけますでしょうか。よろしくお願いいたします。",
  "notes": ["敬語に整えました", "依頼を丁寧な表現にしました"],
  "mode": "polite",
  "mode_name": "丁寧・敬語に",
  "source": "miss",
  "degraded": false
}

ヘルスチェック

GET /healthz

稼働確認用。認証不要で {"ok": true} を返します。

エラー

エラーは HTTP ステータス+ {"error": "..."} で返します。

ステータスerror意味
401unauthorizedAPIキーが無い/誤り
413payload_too_largeリクエストが大きすぎる
429rate_limitedレート上限に到達
422(検証)入力の形式が不正
500internal_errorサーバ内エラー
多くのツールは、AI応答が不完全でも例外にせず degraded: true と要確認フラグで部分結果を返します(暴走・全断を防ぐ設計)。

レート・使用量上限

安全のため、レート制限(毎分の呼び出し数)と使用量上限を備えています。上限に達すると 429 を返します。各リクエストに limit_usd を付けてコストを自分で制限することもできます。想定を超える課金や乱用を、構造的に防ぎます。

料金

前払いクレジット制です(使った分だけ消費・買った分しか使えない)。料金をご確認のうえ、まずは無料トライアルをお試しください。