> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API 概要

> インテリジェントな文書処理のための ABBYY Vantage REST API の概要: Processing API と Reporting API、OAuth 2.0 認証、ベース URL を紹介します。

export const VantageRegion = ({children}) => {
  const STORAGE_KEY = "abbyy.vantage.region";
  const REGIONS = [{
    code: "eu",
    label: "Europe"
  }, {
    code: "us",
    label: "North America"
  }, {
    code: "au",
    label: "Australia / Asia-Pacific"
  }];
  const [region, setRegion] = useState("eu");
  const [open, setOpen] = useState(false);
  const containerRef = useRef(null);
  const dropdownRef = useRef(null);
  function safeGetSavedRegion() {
    try {
      const saved = typeof window !== "undefined" ? window.localStorage.getItem(STORAGE_KEY) : null;
      const valid = new Set(REGIONS.map(r => r.code));
      return saved && valid.has(saved) ? saved : "eu";
    } catch {
      return "eu";
    }
  }
  function safeSetSavedRegion(code) {
    try {
      if (typeof window !== "undefined") {
        window.localStorage.setItem(STORAGE_KEY, code);
      }
    } catch {}
  }
  function dispatchRegionChanged(code) {
    try {
      if (typeof window !== "undefined") {
        window.dispatchEvent(new CustomEvent("abbyy:region-changed", {
          detail: {
            code
          }
        }));
      }
    } catch {}
  }
  function replaceRegionInString(text, currentRegion) {
    if (typeof text !== "string") return text;
    const hostRegex = /https:\/\/vantage-(eu|us|au)\.abbyy\.com/gi;
    const tokenRegex = /https:\/\/vantage-\[region\]\.abbyy\.com/gi;
    const bareHostRegex = /vantage-(eu|us|au)\.abbyy\.com/gi;
    const bareTokenRegex = /vantage-\[region\]\.abbyy\.com/gi;
    return text.replace(hostRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(tokenRegex, `https://vantage-${currentRegion}.abbyy.com`).replace(bareHostRegex, `vantage-${currentRegion}.abbyy.com`).replace(bareTokenRegex, `vantage-${currentRegion}.abbyy.com`);
  }
  useEffect(() => {
    setRegion(safeGetSavedRegion());
  }, []);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      const href = a.getAttribute("href");
      if (href) {
        const next = replaceRegionInString(href, region);
        if (next !== href) {
          a.setAttribute("href", next);
        }
      }
    });
    const walker = typeof document !== "undefined" ? document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null) : null;
    if (walker) {
      const toUpdate = [];
      let node = walker.nextNode();
      while (node) {
        const updated = replaceRegionInString(node.nodeValue, region);
        if (updated !== node.nodeValue) {
          toUpdate.push([node, updated]);
        }
        node = walker.nextNode();
      }
      toUpdate.forEach(([textNode, value]) => {
        textNode.nodeValue = value;
      });
    }
  }, [region, children]);
  useEffect(() => {
    const root = containerRef.current;
    if (!root) return;
    const anchors = root.querySelectorAll("a[href]");
    anchors.forEach(a => {
      a.style.fontWeight = "600";
      a.style.textDecoration = "underline";
      a.style.textUnderlineOffset = "2px";
    });
  }, [region, children]);
  useEffect(() => {
    const onRegionChanged = evt => {
      const code = evt && evt.detail && evt.detail.code;
      if (!code || code === region) return;
      setRegion(code);
    };
    if (typeof window !== "undefined") {
      window.addEventListener("abbyy:region-changed", onRegionChanged);
    }
    return () => {
      if (typeof window !== "undefined") {
        window.removeEventListener("abbyy:region-changed", onRegionChanged);
      }
    };
  }, [region]);
  useEffect(() => {
    const onClickAway = e => {
      if (!dropdownRef.current) return;
      if (!dropdownRef.current.contains(e.target)) {
        setOpen(false);
      }
    };
    document.addEventListener("click", onClickAway, true);
    return () => document.removeEventListener("click", onClickAway, true);
  }, []);
  const onSelect = code => {
    setRegion(code);
    safeSetSavedRegion(code);
    dispatchRegionChanged(code);
    setOpen(false);
  };
  const current = REGIONS.find(r => r.code === region) || REGIONS[0];
  return <div className="not-prose">
      <div className="mb-4 inline-flex items-center gap-2" ref={dropdownRef}>
        <span className="text-sm text-zinc-950/80 dark:text-white/80">Tenant Region:</span>
        <div className="relative">
          <button type="button" aria-haspopup="listbox" aria-expanded={open ? "true" : "false"} onClick={() => setOpen(v => !v)} className="h-8 px-3 rounded-md bg-zinc-900/5 dark:bg-white/5 border border-zinc-950/20 dark:border-white/20 text-sm inline-flex items-center gap-2">
            <span className="text-zinc-950 dark:text-white">{current.label}</span>
            <svg width="8" height="24" viewBox="0 -9 3 24" className="transition-transform text-gray-400 overflow-visible dark:text-gray-600 ml-auto" style={{
    transform: open ? "rotate(270deg)" : "rotate(90deg)"
  }}>
              <path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round"></path>
            </svg>
          </button>
          {open ? <div role="listbox" className="absolute z-50 left-full top-0 ml-2 w-56 rounded-xl border border-zinc-950/20 dark:border-white/20 bg-white dark:bg-zinc-900 shadow-lg p-2">
              {REGIONS.map(r => {
    const selected = r.code === region;
    return <button key={r.code} type="button" role="option" aria-selected={selected ? "true" : "false"} onClick={() => onSelect(r.code)} className={"w-full flex items-center justify-between px-3 py-2 rounded-lg text-sm hover:bg-zinc-950/5 dark:hover:bg-white/10 text-zinc-950 dark:text-white" + (selected ? " font-medium" : "")}>
                    <span style={selected ? {
      color: "#ff2038"
    } : undefined}>{r.label}</span>
                    <span className={selected ? "ml-3" : "ml-3 invisible"} style={selected ? {
      color: "#ff2038"
    } : undefined}>✓</span>
                  </button>;
  })}
            </div> : null}
        </div>
      </div>
      <div ref={containerRef} className="prose dark:prose-invert max-w-none">{children}</div>
    </div>;
};

ABBYY Vantage プラットフォームは、インテリジェントな文書処理をアプリケーションに統合するために 2 つの REST API を提供しています。

<div id="base-url">
  ## ベース URL
</div>

すべての API リクエストは、Vantage の本番環境サーバーに送信されます。

<VantageRegion>
  ```
  https://vantage-us.abbyy.com
  ```
</VantageRegion>

<div id="authentication">
  ## 認証
</div>

Vantage API では認証に **OAuth 2.0** を使用します。すべてのリクエストには、Authorization ヘッダーにアクセストークンを含める必要があります。

```bash theme={null}
Authorization: Bearer {your_access_token}
```

Vantage では、次の 3 つの認証フローをサポートしています。

| フロー                                                                                                             | 最適な用途          |
| --------------------------------------------------------------------------------------------------------------- | -------------- |
| [Resource Owner Password Credentials](/ja/vantage/developer/authentication/resource-owner-password-credentials) | サーバー間の統合       |
| [Authorization Code Flow](/ja/vantage/developer/authentication/authorization-code-flow)                         | ユーザー向けアプリケーション |
| [Client Credentials](/ja/vantage/developer/authentication/client-credentials)                                   | マシン間通信         |

<Note>
  ABBYY Vantage のテナント発行を依頼するには、[ABBYY に連絡](https://www.abbyy.com/company/contact-us/)してください。テナントアカウントを取得したら、認証用のユーザーアカウントと API クライアントを作成できます。
</Note>

<div id="processing-api">
  ## Processing API
</div>

Processing API (`/api/publicapi/v1/`) を使用すると、次のことができます：

* **トランザクションの作成** — 特定の Skill を使用してドキュメントを処理用に送信する
* **ファイルの管理** — ドキュメント画像のアップロード、編集、整理を行う
* **ステータスの追跡** — トランザクションの進行状況を監視し、エラーを処理する
* **結果の取得** — 抽出されたデータを JSON または XML 形式でダウンロードする
* **カタログの管理** — データ カタログおよびルックアップ テーブルを管理する

<div id="common-workflows">
  ### 一般的なワークフロー
</div>

* **[単一のAPI呼び出しによるドキュメント処理](/ja/vantage/developer/processing-documents/processing-documents-single-api)** — アップロード、処理、結果の取得を自動的に行う単一のリクエストで、ドキュメントを処理します。
* **[個別のAPI呼び出しによるドキュメント処理](/ja/vantage/developer/processing-documents/processing-documents-with-separate-api-calls)** — ドキュメントのアップロード、処理、結果の取得をきめ細かく制御するには、個別のAPI呼び出しを使用します。
* **[手動確認の統合](/ja/vantage/developer/integrating-manual-review)** — 人による確認が必要なドキュメント向けに、ワークフローへ手動確認を組み込みます。

<div id="reporting-api">
  ## Reporting API
</div>

Reporting API (`/api/reporting/v2/`) では、次の情報にアクセスできます。

* **ビジネス指標** — トランザクション数、処理時間、スループット
* **品質分析** — 抽出精度と信頼度スコア
* **field レベルのデータ** — 分析用の詳細な抽出結果

[Reporting の詳細 →](/ja/vantage/developer/reporting/reporting-service)

<div id="output-formats">
  ## 出力形式
</div>

Vantage は抽出されたデータを構造化された形式で返します。

* **[JSON 出力](/ja/vantage/developer/output/json/json-output)** — 抽出結果の詳細と信頼度スコアをすべて含む階層構造データ
* **[XML 出力](/ja/vantage/developer/output/xml/xml-output)** — XML 連携を必要とするシステム向けの構造化マークアップ形式

<div id="developer-resources">
  ## 開発者向けリソース
</div>

* **[Vantage API を使い始める](/ja/vantage/developer/getting-started)** — まずはここから — 最初のAPI呼び出しを行い、認証し、処理シナリオを選択します
* **[Postman コレクション](/ja/vantage/developer/postman-collection/overview)** — テストや評価にすぐ使える API コレクション

<div id="rate-limits-best-practices">
  ## レート制限とベストプラクティス
</div>

* **バッチ処理** — 複数レコードを処理する場合は、バッチエンドポイントを使用します (1 リクエストあたり最大 5,000 件のカタログレコード)
* **ポーリング** — トランザクションのステータスを確認する際は、適切な間隔 (5～10 秒) でポーリングします
* **エラー処理** — 一時的なエラーに対しては、指数バックオフを伴うリトライロジックを実装します

<div id="next-steps">
  ## 次のステップ
</div>

<Steps>
  <Step title="認証を設定する">
    アプリケーション向けに [OAuth 2.0 を構成します](/ja/vantage/developer/authentication/authentication)
  </Step>

  <Step title="最初のドキュメントを処理する">
    [処理ガイド](/ja/vantage/developer/processing-documents/processing-documents) に従ってドキュメントを送信します
  </Step>

  <Step title="API を確認する">
    [Processing API](/ja/vantage/developer/processing-documents/processing-documents) と [Reporting API](/ja/vantage/developer/reporting/reporting-service) の完全なリファレンスを参照します
  </Step>
</Steps>
