Overview
Learn to work with qBraid APIs
Our API employs a RESTful architecture, featuring intuitive, resource-oriented URLs and leveraging inherent HTTP capabilities such as response codes, authentication, and verbs.
All responses are JSON.
This API is designed for server-to-server use. Browser (cross-origin) requests are restricted to an allowlist of qBraid origins, so calling the API directly from a web page on your own domain is blocked by CORS. Call it from your backend instead, where your API key also stays out of client-side code.
OpenAPI specification
The complete, machine-readable API definition is available as an OpenAPI 3.1 document. Download it to generate client libraries, import the API into tools like Postman or Insomnia, or hand it to an AI agent as a compact description of every endpoint, parameter, and response.
Quantum Job Flow
The diagram below gives a high-level view of how a quantum job moves through an application that integrates with the qBraid API: from a high-level quantum program, to an intermediate representation (IR), to the qBraid API server, then to execution on a quantum backend, with results relayed back to the user.
For a client-side view of how the qBraid-SDK integrates with the qBraid API see the Runtime overview in the SDK docs.
Rate limiting
API requests are rate-limited per IP (unauthenticated) or per user (authenticated) within a rolling 15-minute window.
| Tier | Window | Max requests |
|---|---|---|
| Unauthenticated (IP) | 15 min | 100 |
| Authenticated user | 15 min | 1,000 |
Exceeding the limit returns an HTTP 429 (Too Many Requests) response. Authenticate with a valid API key to use the higher authenticated limit.
Higher rate limits for your organization are available upon request.
Using the SDK and CLI
Most of these endpoints are already wrapped by the qBraid SDK and CLI,
which handle authentication, the { success, data } response envelope,
pagination, and retries for you. Reach for the raw REST API only when you need
something the client doesn’t cover.
Install with pip install -U qbraid qbraid-cli, then run qbraid configure once
with an API key.
| To do this | CLI | Python SDK |
|---|---|---|
| Submit & track jobs (incl. batch groups) | qbraid jobs | QbraidProvider, device.run(), GroupJobSession |
| Browse devices & calibrations | qbraid devices | provider.get_devices(), provider.get_device() |
| Check credits & account | qbraid account credits | QbraidSessionV1 |
For any endpoint without a dedicated wrapper, QbraidSessionV1 (from
qbraid_core) is an authenticated session — call .get(), .post(), etc.
against the API and it handles the X-API-Key header for you.
Thanks for your feedback.

