Skip to main content
IBM Quantum Platform

IBM Quantum Compute Service REST API

IBM Quantum® Compute Service REST APIを使用すると、 IBM Quantum プリミティブを使用して量子処理ユニット(QPU)上で処理を実行できます。IBM Quantum プリミティブは、高度なランタイムコンパイル、エラー抑制、およびエラー軽減技術によって強化された、回路実行のための簡素化されたインターフェースです。また、アクセス可能なインスタンスQPU に関する情報を取得することもできます。


IBM Cloud リソースコントローラーAPIを使用したインスタンスの管理

IBM Quantum Compute Service REST API を使用するには、Quantum Compute インスタンスが必要です。 インスタンスの作成と管理には、次の2つの方法があります:

以下のセクションでは、割り当て制限の設定やバックエンドへのアクセスを含む、プログラムによるインスタンス管理のためのAPIアプローチについて説明します。

インスタンス・パラメーター

IBM Cloud ( Resource Controller )API を使用して Quantum Compute インスタンスを作成または更新する際、リクエスト本文で以下のパラメータを設定できます:

  • instance_limit_seconds (オプション):インスタンスに設定する制限(文字列またはnull)。 Open Planの場合、指定がないときはデフォルトで10分となります。
  • usage_allocation_seconds: インスタンスに割り当てられた時間(文字列またはnull)。フェアシェア・スケジューラが、すべてのQPUの使用状況に基づいてキューの優先順位を決定するために使用されます。 従量課金型インスタンスには適用されません。
  • backends: このインスタンスで使用可能なバックエンド名の配列(文字列の配列または ["ANY"])。 デフォルトは (そのプランで利用可能なすべての ["ANY"] バックエンド)です。 バックエンドがない場合は、 [] を使用してください。

インスタンス拡張機能

IBM Cloud リソースコントローラーAPIを介してインスタンスの詳細を取得すると、レスポンスには追加のインスタンス情報を含む instance_details extensions プロパティが含まれます:

  • instance_limit_seconds: インスタンスに設定された時間制限(整数またはnull、0以上)
  • usage_allocation_seconds: インスタンスに割り当てられた時間(整数またはnull、0以上)
  • backends: このインスタンスで使用可能なバックエンド名の許可リスト(必須の配列)

パラメータや拡張機能に関する詳細(例やAPIエンドポイントを含む)については、 「 IBM Cloud Platform APIを使用してインスタンスにアクセスする 」を参照してください。


IBM Quantum Compute Service REST API の使用

以下のセクションでは、 IBM Quantum Compute Service REST API を使用してジョブを送信し、セッションを管理する方法について説明します。 これらの操作を行うには、認証と既存のインスタンスが必要です。

認証

すべての呼び出しで、httpヘッダーとして IBM Cloud Identity and Access Management (IAM)ベアラートークンを提供する必要があります。 このAPIキーは、 ダッシュボードの上部にあるAPIキーを使って簡単に生成できます。 ベアラートークンの詳細については、 IAM Identity Services API を参照。 IAM REST API を使って生成するには、次のような curl リクエストを使う。

curl -X POST 'https://iam.cloud.ibm.com/identity/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=MY_APIKEY'

期待される応答

{
   "access_token": "<NEW_BEARER_TOKEN>",
   "refresh_token": "not_supported",
   "token_type": "Bearer",
   "expires_in": 3600,
   "expiration": 1473188353,
   "scope": "ibm_openid"
}
ベアラートークンとは何ですか?

ベアラ・トークンは、1 時間以内に失効する一時的なクレデンシャルである。 取得したトークンの有効期限が切れた後、 IBM Cloud や他のサービス API を引き続き呼び出すには、新しいトークンを生成する必要があります。 すべてのアカウントで、割り当てられたアクセス・レベルで許可されているアクションのみを実行できます。

API レスポンスのレスポンス・プロパティ expires_in を使用して、特定のアクセストークンの有効期間を特定する。

さらに、REST APIへの多くのリクエストは、リクエストのヘッダーにインスタンスのクラウドリソース名 (CRN)を必要とする。 アクセス可能なインスタンスは、ダッシュボードで確認するか、左上のメニューからインスタンスページを選択することで確認できます。 各インスタンスはCRN識別子とともにリストされる。

次に、ベアラートークン、CRN、 IBM -API-Versionを、リクエストごとに AuthorizationService-CRN のヘッダー内にこの形式で送信します:

Authorization: Bearer <YOUR_BEARER_TOKEN>
Service-CRN: <YOUR_INSTANCE_CRN>
IBM-API-Version: <YYYY-MM-DD>

要求例:

EUデ地域

インスタンスが eu-de リージョンにある場合は、代わりにこの URL: https://eu-de.quantum.cloud.ibm.com/api/v1/backends

curl -X 'GET' \
    'https://quantum.cloud.ibm.com/api/v1/backends' \
    -H 'accept: application/json' \
    -H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
    -H 'Service-CRN: <YOUR_INSTANCE_CRN>' \
    -H 'IBM-API-Version: 2026-04-15'

ジョブを投入する

ジョブ投入の際には、以下の点に注意すること:

  • プリミティブ・ジョブを投入するには、 create jobオペレーションを使用します。
  • 1つのジョブに複数の回路を登録することができます。 OpenQASM 文字列の配列として1つのジョブに投入できます。
  • program_id パラメータで使用するプリミティブを指定する。 利用可能なプリミティブ値は samplerestimator
  • QPUにジョブを投入する際には、 IBM Cloud インスタンスCRNを指定する必要があります。
  • 指定できるバックエンド名のリストについては、 IBM Quantum Platformの Compute resources セクションでアクセスできるバックエンドをご覧ください。

1つの回路と1つの観測値を持つ推定ジョブの作成要求例:

EUデ地域

インスタンスが eu-de リージョンにある場合は、代わりにこの URL: https://eu-de.quantum.cloud.ibm.com/api/v1/jobs

curl -X 'POST' \
  'https://quantum.cloud.ibm.com/api/v1/jobs' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
  -H 'Service-CRN: <YOUR_INSTANCE_CRN>' \
  -H 'IBM-API-Version: 2026-04-15' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "program_id": "estimator",
  "backend": "ibm_brisbane",
  "params": {
    "pubs": [[
      "OPENQASM 3.0; include \"stdgates.inc\"; bit[1] c; x $0; c[0] = measure $0;", "Z"
    ]],
    "options": {"dynamical_decoupling": {"enable": true}},
    "version": 2,
    "resilience_level": 1
  }
}'

セッションを使用する

セッションを開始するには、 create sessionオペレーションを使用する。 このレスポンスは、セッションの一部としてジョブを実行するために、ジョブとともに送信できる "id"

次の例では、セッションを作成する(モードは指定しない):

EUデ地域

インスタンスが eu-de リージョンにある場合は、代わりにこの URL: https://eu-de.quantum.cloud.ibm.com/api/v1/sessions

curl -X POST \
  'https://quantum.cloud.ibm.com/api/v1/sessions' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
  -H 'Service-CRN: <YOUR_INSTANCE_CRN>' \
  -H 'IBM-API-Version: 2026-04-15' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "mode": "dedicated",
  "max_ttl": 28800
}'

こんな返事が返ってくるだろう:

{
  "id": "session_id1"
}

次のジョブでは、セッションIDを使って、このジョブをセッションの一部として実行する:

EUデ地域

インスタンスが eu-de リージョンにある場合は、代わりにこの URL: https://eu-de.quantum.cloud.ibm.com/api/v1/jobs

curl -X POST \
  'https://quantum.cloud.ibm.com/api/v1/jobs' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
  -H 'Service-CRN: <YOUR_INSTANCE_CRN>' \
  -H 'IBM-API-Version: 2026-04-15' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "program_id": "sampler",
  "backend": "ibm_brisbane",
  "session_id": "session_id1",
  "params": {
    "pubs": [[
      "OPENQASM 3.0; include \"stdgates.inc\"; bit[1] c; x $0; c[0] = measure $0;"
    ]],
    "options": {},
    "version": 2
  }
}'
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。