API ドキュメント
quonel のAIツールは、すべて共通のAPIから使えます。認証キーを添えてJSONをPOSTするだけ。
概要
ベースURL:https://api.quonel.com
リクエスト・レスポンスはいずれも application/json。すべてのツールが同じ認証・同じ作法で使えます。
認証
発行された API キーを Authorization ヘッダに付けます。キーはお問い合わせで発行します。
Authorization: Bearer <YOUR_API_KEY>
401 unauthorized を返します。キーはサーバ側で安全に保管し、ブラウザなど公開環境に置かないでください。問い合わせ一次対応
問い合わせ本文から、カテゴリ分類・優先度・一次返信の下書きをまとめて生成します。
リクエスト
| フィールド | 型 | 説明 |
|---|---|---|
text | string | 問い合わせ本文(必須) |
categories | string[] | 分類ラベル(任意・既定=請求/配送/アカウント/不具合/その他) |
priorities | string[] | 優先度ラベル(任意・既定=高/中/低) |
draft | boolean | 返信ドラフトを作るか(任意・既定 true) |
guide | string | 自社の対応方針・トーン・禁止事項(任意)。下書きに反映(最大800字) |
glossary | string[] | 用語・表記の指定(任意・最大40件)。例 ["返品→ご返品","客→お客様"]。下書きが表記に従う |
templates | object | カテゴリ別の定型文(任意)。例 {"配送":"配送状況を確認します…"}。分類結果のカテゴリに一致する定型文を下書きの土台に反映(応答の draft.template_used で反映有無) |
limit_usd | number | このリクエストのコスト上限(任意) |
guide/glossary は下書きの固定プレフィックスに入り、指定ごとにキャッシュが分離されます(別方針の下書きを誤って再利用しません)。/inbox/batch でも同じ2項目を指定できます。
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 }
まとめて仕分け(バルク処理)
大量の問い合わせをまとめてカテゴリ+優先度で仕分け(最大200件)。ドラフトは既定OFF(draft:true で個別生成/draft_batch:true で残差を1コールに束ねてコスト優先=要レビュー前提)。バックログの一括トリアージ向け。
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}} }
頻出質問の抽出
問い合わせ群を似た内容でクラスタリングし、多い順に代表文+件数を返します(最大200件)。既定は追加のAI生成なし(埋め込みのみ・キャッシュ経由)。よくある質問を templates(カテゴリ別定型文)や guide に落とし込む起点に。任意で threshold(0.5–0.99)・top・min_size。suggest:true で各クラスタの再利用可能な定型文(プレースホルダ入り)を1コールに束ねて生成し clusters[].suggested_template に付与。
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 }
テキスト分類
テキストを、指定したラベルのいずれかに分類します。タグ付け・仕分け・モデレーションなどに。
リクエスト
| フィールド | 型 | 説明 |
|---|---|---|
text | string | 分類対象(必須) |
labels | string[] | ラベル候補(必須・2件以上) |
limit_usd | number | コスト上限(任意) |
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": [] }
まとめて分類(バルク処理)
複数テキストをまとめて分類(最大200件)。キャッシュ/ルールで解けない残差だけを1コールに束ねるためAPI最小・低コスト。結果は単発 /classify とキャッシュ共有。フィールドは texts(string[]・必須)+labels(必須・2件以上)。
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} }
レビュー分析
複数のレビューをまとめて分析し、各レビューの感情・観点、全体の集計、観点×感情のクロス集計、観点ごとの代表コメントを返します(1回のリクエストで最大300件。内部で50件ごとにまとめて処理)。
リクエスト
| フィールド | 型 | 説明 |
|---|---|---|
reviews | string[] | レビュー本文の配列(必須・最大300件) |
aspects | string[] | 観点ラベル(任意・既定=品質/価格/接客・対応/配送/使いやすさ/その他) |
dates | string[] | reviews と同順の日付 YYYY-MM-DD(任意)。渡すと感情の時系列トレンドを返す(AI追加なし) |
trend_bucket | string | トレンドの粒度 day/week/month(既定 month) |
limit_usd | number | コスト上限(任意) |
dates を渡した場合の追加レスポンス(バケット昇順・net_sentiment は −1〜+1):
{
"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
}
}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} }
要約
長文テキストを要約し、要点(箇条書き)を返します。長い文章は段落・文の境界で自動的に分割し、各部分を要約してから統合します(1回のリクエストで最大約50000文字)。
リクエスト
| フィールド | 型 | 説明 |
|---|---|---|
text | string | 要約対象の文章(必須・最大50000文字) |
limit_usd | number | コスト上限(任意) |
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 }
翻訳
テキストを指定した言語へ翻訳します(1回のリクエストで最大約8000文字)。対象言語はキャッシュ鍵に含まれ、同一文+同一言語は再利用されます。対応言語の一覧は GET /translate/langs。
リクエスト
| フィールド | 型 | 説明 |
|---|---|---|
text | string | 翻訳対象の文章(必須・最大8000文字) |
target | string | 対象言語コード(既定 en)。例 en/ja/zh/zh-TW/ko/fr/es/de/pt/th/vi/id。未対応は英語にフォールバック |
limit_usd | number | コスト上限(任意) |
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 }
整文・リライト
文章を、意味を保ったまま整えます(1回のリクエストで最大約8000文字)。モードは polite(丁寧・敬語に)/concise(簡潔に)/friendly(やわらかく)/proofread(校正)。モードはキャッシュ鍵に含まれ、モードごとに再利用が分離されます。一覧は GET /rewrite/modes。
リクエスト
| フィールド | 型 | 説明 |
|---|---|---|
text | string | 整える対象の文章(必須・最大8000文字) |
mode | string | 整え方(既定 polite)。未対応は polite にフォールバック |
limit_usd | number | コスト上限(任意) |
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 }
ヘルスチェック
稼働確認用。認証不要で {"ok": true} を返します。
エラー
エラーは HTTP ステータス+ {"error": "..."} で返します。
| ステータス | error | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無い/誤り |
413 | payload_too_large | リクエストが大きすぎる |
429 | rate_limited | レート上限に到達 |
422 | (検証) | 入力の形式が不正 |
500 | internal_error | サーバ内エラー |
degraded: true と要確認フラグで部分結果を返します(暴走・全断を防ぐ設計)。レート・使用量上限
安全のため、レート制限(毎分の呼び出し数)と使用量上限を備えています。上限に達すると 429 を返します。各リクエストに limit_usd を付けてコストを自分で制限することもできます。想定を超える課金や乱用を、構造的に防ぎます。
料金
前払いクレジット制です(使った分だけ消費・買った分しか使えない)。料金をご確認のうえ、まずは無料トライアルをお試しください。