Quickstart
最初の検索を通し、検索結果から本文セクションを取得するまでの手順です。
1. API キーを環境変数に設定する
管理アプリで API キーを作成し、環境変数として渡します。
export MOMONGA_SEARCH_API_KEY=ms_live_xxx
export MOMONGA_BASE_URL=https://api.momongasearch.com/v1
API キーは Bearer 認証情報です。リポジトリ、フロントエンド bundle、ログ、issue、チャット、プロンプトに含めないでください。Next.js などでは、ブラウザに公開される環境変数(例: NEXT_PUBLIC_)に入れないでください。Claude Code / Codex などに実装を依頼する場合も、値を貼らず、環境変数から読むように指示します。
すべてのリクエストに次のヘッダーを付けます。
Authorization: Bearer {API_KEY}
2. 企業名・証券コードを確認する
curl -s -G "https://api.momongasearch.com/v1/issuers/search" \
--data-urlencode "q=三菱商事" \
-H "Authorization: Bearer $MOMONGA_SEARCH_API_KEY"
レスポンス例:
{
"results": [
{
"security_code": "8058",
"edinet_code": "E02529",
"name": "三菱商事株式会社",
"market": "プライム(内国株式)",
"sector": "卸売業"
}
]
}
3. 公表資料を一覧する
curl -s "https://api.momongasearch.com/v1/documents?security_codes=8058&limit=10" \
-H "Authorization: Bearer $MOMONGA_SEARCH_API_KEY"
GET /v1/documents は 0-credit API です。認証、リクエスト上限、利用上限は適用されます。
確認するフィールド:
| フィールド | 使い方 |
|---|---|
document_id | /toc、/content、/page-images、/originals に渡す ID |
content_status | ready なら本文・目次取得へ進める。pending_release は再試行、external_only は外部確認 |
reference_url | 外部発信元の確認用 URL。本文や元ファイルの取得には使わない |
published_at | 公式な公表・提出時刻。未確定なら null |
timeline_at | 一覧・検索・timeline_since / timeline_until に使う時刻。公式時刻とは限らない |
4. 自然文で文書を検索する
curl -s -X POST "https://api.momongasearch.com/v1/search/documents" \
-H "Authorization: Bearer $MOMONGA_SEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "原材料価格の上昇をどのように価格転嫁していますか?",
"security_codes": [
"8058"
],
"match_type": "semantic",
"top_k": 3,
"include_snippet": true
}'
検索結果では document_id と matches[].section_id を控えます。top_k は 1 から 50 まで指定でき、未指定時は 10 件です。include_snippet=true で短い抜粋も返ります。
match_type の既定値は semantic です。semantic 検索では、根拠候補を探す疑問文を書きます。短い観点語で探す場合は match_type: "lexical" を明示します。投資判断や要約は、取得した本文を LLM や分析コードに渡して行います。
API リクエストには、個人情報、秘密情報、未公表の重要事実などの機密情報を含めないでください。情報の取扱いは プライバシーポリシー を確認してください。
5. 目次を見て、必要な本文だけ取得する
/toc は 0-credit API ですが、content_status=ready の文書だけで使えます。pending_release や external_only の文書では /toc / /content に進まず、content_status に応じて分岐します。
curl -s "https://api.momongasearch.com/v1/documents/{document_id}/toc" \
-H "Authorization: Bearer $MOMONGA_SEARCH_API_KEY"
toc[].section_id、heading_path、character_count を見て、LLM に渡す範囲を決めます。section_id は検索結果の matches[].section_id と同じ仕様です。/toc は本文取得用のセクション一覧であり、紙面上の全見出しを列挙するものではありません。
目次は toc[] に入ります。
{
"document_id": "doc_xxx",
"toc": [
{
"section_id": "sec-b2c3d4e5",
"section_title": "経営成績等の概況",
"heading_path": ["有価証券報告書", "経営成績等の概況"],
"character_count": 3200,
"page_number": 12
}
]
}
curl -s "https://api.momongasearch.com/v1/documents/{document_id}/content?sections=sec-b2c3d4e5§ions=sec-c3d4e5f6" \
-H "Authorization: Bearer $MOMONGA_SEARCH_API_KEY"
GET /v1/documents/{document_id}/content は credits を消費します。sections を指定すると、必要な節だけ取得できます。複数指定する場合は ?sections=...§ions=... のように同名キーを繰り返します。
本文全体は content、セクション単位の本文は content_sections[] に入ります。sections_returned[] には、実際に返されたセクションの section_id と表示名が入ります。content_format は文書により text または markdown です。
{
"document_id": "doc_xxx",
"content_format": "text",
"sections_returned": [
{
"section_id": "sec-b2c3d4e5",
"section_title": "経営成績等の概況"
}
],
"content_sections": [
{
"section_id": "sec-b2c3d4e5",
"section_title": "経営成績等の概況",
"character_count": 3200,
"content": "経営成績等の概況\n..."
}
],
"content": "経営成績等の概況\n..."
}
6. Python で同じ検索を呼ぶ
import os
import requests
base_url = os.environ["MOMONGA_BASE_URL"]
api_key = os.environ["MOMONGA_SEARCH_API_KEY"]
response = requests.post(
f"{base_url}/search/documents",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
},
json={
"query": "原材料価格の上昇をどのように価格転嫁していますか?",
"security_codes": ["8058"],
"match_type": "semantic",
"top_k": 3,
"include_snippet": True,
},
timeout=30,
)
response.raise_for_status()
data = response.json()
print(data["results"])
7. TypeScript で同じ検索を呼ぶ
async function main() {
const baseUrl = process.env.MOMONGA_BASE_URL;
const apiKey = process.env.MOMONGA_SEARCH_API_KEY;
if (!baseUrl || !apiKey) {
throw new Error("MOMONGA_BASE_URL and MOMONGA_SEARCH_API_KEY are required");
}
const response = await fetch(`${baseUrl}/search/documents`, {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
query: "原材料価格の上昇をどのように価格転嫁していますか?",
security_codes: ["8058"],
match_type: "semantic",
top_k: 3,
include_snippet: true,
}),
});
if (!response.ok) {
throw new Error(await response.text());
}
const data = await response.json();
console.dir(data.results, { depth: null });
}
main().catch((error) => {
console.error(error);
process.exit(1);
});
content_status
| status | 意味 | 次にすること |
|---|---|---|
ready | 本文・目次を取得可能 | /toc でセクションを選び、/content を呼ぶ |
pending_release | 本文公開待ち | retry_after_seconds を目安に再試行する。必要なら reference_url も表示する |
external_only | メタデータのみ | /content は呼ばず、reference_url で外部発信元を確認する |
詳しくは 基本概念 を参照してください。
credits とリクエスト上限
0-credit API は credits を消費しませんが、認証とリクエスト上限の対象です。credit API の一覧と消費量は エンドポイント、料金と利用上限は Pricing を参照してください。