モモンガサーチAPI

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_statusready なら本文・目次取得へ進める。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_idmatches[].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_releaseexternal_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_idheading_pathcharacter_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&sections=sec-c3d4e5f6" \
  -H "Authorization: Bearer $MOMONGA_SEARCH_API_KEY"

GET /v1/documents/{document_id}/content は credits を消費します。sections を指定すると、必要な節だけ取得できます。複数指定する場合は ?sections=...&sections=... のように同名キーを繰り返します。

本文全体は 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 を参照してください。