IBM Quantum System REST API
IBM® ( Quantum System REST API )は、お客様の施設に設置されたオンプレミスの量子コンピュータへの直接アクセスを提供します。 このAPIは、お客様のインフラ(通常はHPC環境)との統合後、ローカルにデプロイされます。 このAPIの役割は、QPUと従来型ランタイムの異種リソースを抽象化することです。 このインターフェースを通じて、ユーザーはハードウェア固有の詳細を管理する必要なく、 Qiskit Runtime プリミティブを使用してQPU上でワークロードを実行できます。
認証
すべてのリクエストの HTTP ヘッダーに、 IBM Cloud® Identity and Access Management (IAM) ベアラー・トークンを含める必要があります。 ベアラー・トークンを生成するには、まず、統合プロセスの一環としてオンボーディング時に作成したAPIキーを使用する必要があります(APIキーをお持ちでない場合は、管理者にお問い合わせください)。 次に、以下の curl リクエストを使用して、IAM REST API を通じてベアラー・トークンを生成します。
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のレスポンスに含まれるresponse expires_in プロパティを使用して、特定のアクセストークンの有効期限を確認してください。
ベアラー・トークンに関する詳細については、『 IBM Cloud 』のドキュメントを参照してください。
また、REST API へのすべてのリクエストには、リクエストヘッダーにインスタンスのクラウドリソース名 (CRN)を含める必要があります。 左上のメニューから 「インスタンス 」ページに移動し、 「ダイレクトアクセス 」タブを選択すると、アクセス権限のあるインスタンスを確認できます。 各インスタンスはCRN識別子とともに一覧表示され、お客様のインフラストラクチャ(通常はHPC環境)を表しています。 このページにアクセスできない場合は、管理者にお問い合わせください。
各リクエストにおいて、bearerトークン、CRN、および IBM -API-Versionを、以下の形式でHeader Service-CRN``Authorization およびBodyに含めて送信してください:
Authorization: Bearer <YOUR_BEARER_TOKEN>
Service-CRN: <YOUR_INSTANCE_CRN>
IBM-API-Version: <YYYY-MM-DD>
要求例:
curl -X 'GET' \
'<YOUR_QSA_URL>/v1/backends' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
-H 'Service-CRN: <YOUR_INSTANCE_CRN>' \
-H 'IBM-API-Version: 2026-02-15'import requests
reqUrl = "<YOUR_QSA_URL>/v1/backends"
headersList = {
"Accept": "application/json",
"Authorization": "Bearer <YOUR_BEARER_TOKEN>",
"Service-CRN": "<crn:YOUR_DIRECT_ACCESS_PLAN_INSTANCE_CRN>",
"IBM-API-Version": "2026-02-15"
}
payload = ""
response = requests.request("GET", reqUrl, data=payload, headers=headersList)
print(response.json())ジョブを投入する
ジョブを送信する際は、以下の点にご注意ください:
- 「 ジョブの作成 」操作を使用して、プリミティブ・ジョブを送信します。
- 1つのジョブ内で、回路を表す OpenQASM 文字列の配列として、複数の回路を送信することができます。
- 使用するプリミティブを パラメータ
program_idで指定してください。 利用可能なプリミティブ値は とsamplerですestimator。 - オンプレミスのQPUにジョブを送信する際は、 IBM Cloud のDirect AccessインスタンスのCRNを指定する必要があります。
- バックエンド名として、オンプレミスのQuantumシステム名を指定する必要があります。 On-Prem Plan にアクセスできる場合は、 IBM Quantum Platform の「 Compute resources 」セクションでバックエンド名を確認できます。
回路1つとオブザーバブル1つを含むEstimatorジョブを作成するリクエストの例:
curl -X 'POST' \
'<YOUR_QSA_URL>/v1/jobs' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
-H 'Service-CRN: <YOUR_DIRECT_ACCESS_PLAN_INSTANCE_CRN>' \
-H 'IBM-API-Version: 2026-02-15' \
-H 'Content-Type: application/json' \
--data-raw '{
{
"id": "6e32f594-189e-4bc5-89a2-3c21e1c7e75a",
"program_id": "sampler",
"backend": "ibm_<YOUR_SYSTEM_NAME>",
"timeout_secs": 10000,
"storage": {
"input": {
"type": "ibmcloud_cos",
"region": "us-east",
"region_type": "regional",
"bucket_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/abc123:abc123:bucket:my-bucket",
"object_name": "params:6e32f594-189e-4bc5-89a2-3c21e1c7e75a"
},
"results": {
"type": "ibmcloud_cos",
"region": "us-east",
"region_type": "regional",
"bucket_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/abc123:abc123:bucket:my-bucket",
"object_name": "results:6e32f594-189e-4bc5-89a2-3c21e1c7e75a"
},
"logs": {
"type": "ibmcloud_cos",
"region": "us-east",
"region_type": "regional",
"bucket_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/abc123:abc123:bucket:my-bucket",
"object_name": "logs:6e32f594-189e-4bc5-89a2-3c21e1c7e75a"
}
}
}
}'import requests
import json
reqUrl = "<YOUR_QSA_URL>/v1/jobs"
headersList = {
"Accept": "application/json",
"Authorization": "Bearer <YOUR_BEARER_TOKEN>",
"Service-CRN": "<YOUR_DIRECT_ACCESS_PLAN_INSTANCE_CRN>",
"IBM-API-Version": "2026-02-15",
"Content-Type": "application/json"
}
payload = json.dumps({
{
"id": "6e32f594-189e-4bc5-89a2-3c21e1c7e75a",
"program_id": "sampler",
"backend": "ibm_<YOUR_SYSTEM_NAME>",
"timeout_secs": 10000,
"storage": {
"input": {
"type": "ibmcloud_cos",
"region": "us-east",
"region_type": "regional",
"bucket_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/abc123:abc123:bucket:my-bucket",
"object_name": "params:6e32f594-189e-4bc5-89a2-3c21e1c7e75a"
},
"results": {
"type": "ibmcloud_cos",
"region": "us-east",
"region_type": "regional",
"bucket_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/abc123:abc123:bucket:my-bucket",
"object_name": "results:6e32f594-189e-4bc5-89a2-3c21e1c7e75a"
},
"logs": {
"type": "ibmcloud_cos",
"region": "us-east",
"region_type": "regional",
"bucket_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/abc123:abc123:bucket:my-bucket",
"object_name": "logs:6e32f594-189e-4bc5-89a2-3c21e1c7e75a"
}
}
}
})
response = requests.request("POST", reqUrl, data=payload, headers=headersList)
print(response.json())