Qiskit Transpiler Service REST API
The Qiskit Transpiler Service lets you transpile circuits in the cloud by using the latest Qiskit SDK version and AI-powered transpiler passes.
Authentication
You must provide an API token with every call as an HTTP header. You can copy your API token from the upper-right corner of the Dashboard.
Submit your API token on every request within an Authorization
header with this format:
Authorization: Bearer YOUR_API_TOKEN_HERE
Example request:
curl -X 'GET' \
'https://cloud-transpiler.quantum.ibm.com/routing/backends' \
-H 'accept: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN_HERE'
import requests
reqUrl = "https://cloud-transpiler.quantum.ibm.com/routing/backends"
headersList = {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN_HERE"
}
payload = ""
response = requests.request("GET", reqUrl, data=payload, headers=headersList)
print(response.json())
Transpile quantum circuits
Example request for transpiling a circuit without AI capabilities:
curl -X 'POST' \
'https://cloud-transpiler.quantum.ibm.com/transpile?backend=ibm_sherbrooke&optimization_level=3&ai=false' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN_HERE' \
-d '{
"qasm_circuits": [
"OPENQASM 2.0;\ninclude \"qelib1.inc\";\nqreg q[3];\nh q[0];\nu3(1.9137014941898343,4.961641954901619,5.909596335243553) q[1];\nsxdg q[2];\ncswap q[2],q[0],q[1];\nh q[2];\nu1(0.5104143323055003) q[0];\nid q[1];",
"OPENQASM 3; include \"stdgates.inc\"; bit[2] meas; qubit[2] q; h q[0]; cx q[0], q[1]; barrier q[0], q[1]; meas[0] = measure q[0]; meas[1] = measure q[1];"
]
}'
import requests
reqUrl = "https://cloud-transpiler.quantum.ibm.com/transpile"
headersList = {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN_HERE"
}
params = {
"backend": "ibm_sherbrooke",
"optimization_level": 1,
"ai": "false",
}
payload = {
"qasm_circuits": [
"OPENQASM 2.0;\ninclude \"qelib1.inc\";\nqreg q[3];\nh q[0];\nu3(1.9137014941898343,4.961641954901619,5.909596335243553) q[1];\nsxdg q[2];\ncswap q[2],q[0],q[1];\nh q[2];\nu1(0.5104143323055003) q[0];\nid q[1];",
"OPENQASM 3; include \"stdgates.inc\"; bit[2] meas; qubit[2] q; h q[0]; cx q[0], q[1]; barrier q[0], q[1]; meas[0] = measure q[0]; meas[1] = measure q[1];"
],
}
response = requests.request("GET", reqUrl, json=payload, params=params, headers=headersList)
print(response.json())
Example request for transpiling a circuit using the AI capabilities:
curl -X 'POST' \
'https://cloud-transpiler.quantum.ibm.com/transpile?backend=ibm_sherbrooke&optimization_level=3&ai=true&ai_layout_mode=OPTIMIZE' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN_HERE' \
-d '{
"qasm_circuits": [
"OPENQASM 2.0;\ninclude \"qelib1.inc\";\nqreg q[3];\nh q[0];\nu3(1.9137014941898343,4.961641954901619,5.909596335243553) q[1];\nsxdg q[2];\ncswap q[2],q[0],q[1];\nh q[2];\nu1(0.5104143323055003) q[0];\nid q[1];",
"OPENQASM 3; include \"stdgates.inc\"; bit[2] meas; qubit[2] q; h q[0]; cx q[0], q[1]; barrier q[0], q[1]; meas[0] = measure q[0]; meas[1] = measure q[1];"
]
}'
import requests
reqUrl = "https://cloud-transpiler.quantum.ibm.com/transpile"
headersList = {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN_HERE"
}
params = {
"backend": "ibm_sherbrooke",
"optimization_level": 1,
"ai": "true",
ai_layout_mode: "OPTIMIZE",
}
payload = {
"qasm_circuits": [
"OPENQASM 2.0;\ninclude \"qelib1.inc\";\nqreg q[3];\nh q[0];\nu3(1.9137014941898343,4.961641954901619,5.909596335243553) q[1];\nsxdg q[2];\ncswap q[2],q[0],q[1];\nh q[2];\nu1(0.5104143323055003) q[0];\nid q[1];",
"OPENQASM 3; include \"stdgates.inc\"; bit[2] meas; qubit[2] q; h q[0]; cx q[0], q[1]; barrier q[0], q[1]; meas[0] = measure q[0]; meas[1] = measure q[1];"
],
}
response = requests.request("GET", reqUrl, json=payload, params=params, headers=headersList)
print(response.json())
All of the previous requests return a response like this, where task_id
is the ID of the task running your transpilation process:
{
"task_id": "string"
}
Request the transpilation result as follows:
curl -X 'GET' \
'https://cloud-transpiler.quantum.ibm.com/transpile/<task_id>' \
-H 'accept: application/json' \
-H 'Authorization: Bearer YOUR_API_TOKEN_HERE'
The response follows this structure:
{
"state": "string",
"result": {
"qasm": "string",
"success": true,
"layout": {
"initial": [
0
],
"final": [
0
]
}
}
}
Example:
{
"state": "SUCCESS",
"result": [
{
"qasm": "OPENQASM 2.0; include \"qelib1.inc\"; gate rzx(param0) q0,q1 { h q1; cx q0,q1; rz(param0) q1; cx q0,q1; h q1; } gate ecr q0,q1 { rzx(pi/4) q0,q1; x q0; rzx(-pi/4) q0,q1; } qreg q[127]; rz(-pi) q[92]; sx q[92]; rz(-pi/2) q[92]; rz(-0.3735889719360337) q[102]; sx q[102]; rz(-1.227891159399963) q[102]; sx q[102]; rz(0.7089591292161597) q[102]; rz(pi/2) q[103]; sx q[103]; ecr q[102],q[103]; rz(-2.6818864988905657) q[102]; sx q[102]; rz(-pi/4) q[102]; sx q[102]; ecr q[92],q[102]; rz(-0.8499322410428638) q[92]; sx q[92]; rz(-pi/2) q[92]; rz(-pi/4) q[102]; sx q[102]; sx q[103]; rz(pi/4) q[103]; sx q[103]; rz(-pi/2) q[103]; ecr q[102],q[103]; rz(pi/2) q[102]; sx q[102]; rz(3*pi/4) q[102]; ecr q[92],q[102]; sx q[92]; rz(pi/2) q[92]; sx q[102]; rz(-pi/2) q[102]; ecr q[92],q[102]; rz(pi/2) q[92]; sx q[92]; rz(-pi/4) q[92]; sx q[92]; rz(pi/2) q[92]; rz(2.205208228295711) q[102]; sx q[102]; rz(-pi/2) q[102]; rz(-pi/2) q[103]; sx q[103]; rz(-2.6608412204380834) q[103]; sx q[103]; ecr q[102],q[103]; rz(pi/2) q[102]; sx q[102]; rz(pi/2) q[103]; sx q[103]; rz(-pi/2) q[103]; ecr q[102],q[103]; rz(-pi/2) q[102]; sx q[102]; rz(-pi) q[102]; rz(3*pi/4) q[103]; sx q[103]; rz(-pi) q[103]; ecr q[102],q[103]; rz(-1.090044893643186) q[102]; sx q[102]; rz(-0.5104143323055013) q[102]; sx q[102]; ecr q[92],q[102]; rz(pi/2) q[92]; rz(-pi) q[102]; sx q[102]; rz(-2.2697423059411275) q[103]; sx q[103]; rz(pi/2) q[103];",
"success": true,
"layout": {
"initial": [
103,
102,
92,
108,
59,
72,
100,
99,
82,
9,
0,
16,
116,
74,
61,
126,
20,
106,
17,
22,
36,
47,
19,
21,
71,
58,
125,
119,
38,
11,
29,
75,
121,
94,
45,
52,
90,
13,
46,
87,
57,
6,
80,
91,
10,
115,
32,
51,
55,
122,
77,
120,
67,
88,
112,
86,
30,
37,
118,
85,
76,
97,
98,
95,
26,
50,
8,
113,
62,
42,
12,
15,
41,
23,
105,
81,
53,
1,
43,
5,
107,
64,
123,
31,
68,
35,
44,
114,
28,
70,
48,
69,
109,
124,
83,
33,
14,
73,
27,
66,
40,
54,
104,
25,
79,
3,
117,
60,
84,
7,
110,
63,
101,
56,
2,
93,
4,
24,
18,
78,
89,
34,
96,
65,
111,
49,
39
],
"final": [
58,
79,
7
]
}
},
{
"qasm": "OPENQASM 3.0; include \"stdgates.inc\"; gate rzx_139749147951056(_gate_p_0) _gate_q_0, _gate_q_1 { h _gate_q_1; cx _gate_q_0, _gate_q_1; rz(pi/4) _gate_q_1; cx _gate_q_0, _gate_q_1; h _gate_q_1; } gate rzx_139749059469584(_gate_p_0) _gate_q_0, _gate_q_1 { h _gate_q_1; cx _gate_q_0, _gate_q_1; rz(-pi/4) _gate_q_1; cx _gate_q_0, _gate_q_1; h _gate_q_1; } gate ecr _gate_q_0, _gate_q_1 { rzx_139749147951056(pi/4) _gate_q_0, _gate_q_1; x _gate_q_0; rzx_139749059469584(-pi/4) _gate_q_0, _gate_q_1; } bit[2] meas; rz(-pi/2) $0; sx $0; rz(-0.20788316431931975) $0; sx $0; rz(-pi/2) $0; rz(-pi/2) $1; sx $1; rz(-1.9819380704886775) $1; ecr $1, $0; rz(pi/2) $0; sx $0; rz(-0.20788316431932063) $0; rz(-0.4111417436937801) $1; sx $1; rz(pi/2) $1; barrier $0, $1; meas[0] = measure $0; meas[1] = measure $1;",
"success": true,
"layout": {
"initial": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126
],
"final": [
0,
1
]
}
}
]
}
Was this page helpful?
Report a bug or request content on GitHub.