IBM Quantum System REST API
Der „ IBM® “ ( Quantum System REST API ) ermöglicht den direkten Zugriff auf den vor Ort beim Kunden installierten Quantencomputer. Die API wird nach der Integration in die Infrastruktur des Kunden (in der Regel eine HPC-Umgebung) lokal bereitgestellt. Die Aufgabe der API besteht darin, die heterogenen Ressourcen der QPU und der klassischen Laufzeitumgebung zu abstrahieren. Über diese Schnittstelle führen Benutzer Workloads auf QPUs mithilfe von „ Qiskit Runtime “-Primitiven aus, ohne sich um hardwarespezifische Details kümmern zu müssen.
Authentifizierung
Sie müssen in jedem Request im Header „ HTTP “ ein I AM-Bearer-Token ( IBM Cloud® Identity and Access Management ) angeben. Um ein Bearer-Token zu generieren, müssen Sie zunächst den API-Schlüssel verwenden, den Sie während der Einrichtungsphase im Rahmen des Integrationsprozesses erstellt haben (fragen Sie Ihren Administrator, falls Sie Ihren API-Schlüssel nicht zur Hand haben). Anschließend generieren Sie das Bearer-Token mithilfe der IAM-REST-API mit der folgenden curl Anfrage.
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'Erwartete Antwort:
{
"access_token": "<NEW_BEARER_TOKEN>",
"refresh_token": "not_supported",
"token_type": "Bearer",
"expires_in": 3600,
"expiration": 1473188353,
"scope": "ibm_openid"
}Ein Bearer-Token ist eine temporäre Berechtigung, die nach spätestens einer Stunde abläuft. Nachdem der erworbene Token abgelaufen ist, müssen Sie einen neuen generieren, um weiterhin „ IBM Cloud “ oder andere Service-APIs aufrufen zu können. Sie können nur Aktionen ausführen, die gemäß Ihrer zugewiesenen Zugriffsberechtigung in allen Konten zulässig sind.
Verwenden Sie die Eigenschaft expires_in „response“ in der API-Antwort, um festzustellen, wie lange Ihr spezifisches Zugriffstoken gültig ist.
Weitere Informationen zu Inhabertoken findest du in der Dokumentation zu „ IBM Cloud “.
Zudem muss jede Anfrage an die REST-API den Cloud Resource Name (CRN) der Instanz im Anfrage-Header enthalten. Sie können die Instanzen anzeigen, auf die Sie Zugriff haben, indem Sie im Menü oben links zur Seite „Instanzen“ navigieren und dort die Registerkarte „Direkter Zugriff“ auswählen. Jede Instanz wird mit ihrer CRN-Kennung aufgeführt und repräsentiert Ihre Infrastruktur (in der Regel Ihre HPC-Umgebung). Falls Sie keinen Zugriff auf diese Seite haben, wenden Sie sich bitte an Ihren Administrator.
Geben Sie bei jeder Anfrage in einem Authorization und Service-CRN Header Ihr Bearer-Token, CRN sowie IBM -API-Version in folgendem Format an:
Authorization: Bearer <YOUR_BEARER_TOKEN>
Service-CRN: <YOUR_INSTANCE_CRN>
IBM-API-Version: <YYYY-MM-DD>
Beispielanforderung:
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())Einen Job einreichen
Beachten Sie bei der Übermittlung eines Auftrags Folgendes:
- Verwenden Sie den Befehl „create job“, um einfache Aufträge zu übermitteln.
- Sie können mehrere Schaltkreise in einem einzigen Auftrag als Array von Zeichenfolgen vom Typ „ OpenQASM “ übermitteln, die die Schaltkreise darstellen.
- Geben Sie die gewünschte Primitive mit dem
program_idParameter an. Verfügbare primitive Werte sindsamplerundestimator. - Wenn Sie einen Auftrag an eine lokale QPU übermitteln, müssen Sie die CRN Ihrer „ IBM Cloud “-Direct-Access-Instanz angeben.
- Sie müssen den Namen Ihres lokalen Quantum-Systems als Backend-Namen angeben. Wenn Sie Zugriff auf die „ On-Prem Plan “ haben, können Sie den Backend-Namen im Abschnitt „Compute-Ressourcen“ unter IBM Quantum Platform einsehen.
Beispiel für eine Anfrage zur Erstellung eines Estimator-Jobs mit einem Schaltkreis und einer Beobachtungsgröße:
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())