Skip to main content

Getting Started

Get up and running with QCOS in 5 minutes.

Installation

Python SDK

pip install softqcos-sdk

Requirements: Python 3.10+

Optional dependencies:

# Visualization support (matplotlib, plotly)
pip install softqcos-sdk[visualization]

# Jupyter integration
pip install softqcos-sdk[jupyter]

# Full installation
pip install softqcos-sdk[full]

CLI

pip install softqcos

Verify:

softqcos --version

REST API

No installation required — use curl or any HTTP client.


Authentication

Get Your API Key

  1. Go to portal.softquantus.com
  2. Navigate to Settings → API Keys
  3. Click Generate New Key

Key Types

TypePrefixPermissions
Standardsk-Full API access
Adminsk-admin-Admin operations
Read-Onlysk-ro-Read-only access

Configure

Environment variable (recommended):

export QCOS_API_KEY="sk-your-api-key"

In code:

from softqcos_sdk import QCOSClient

client = QCOSClient(api_key="sk-your-api-key")

CLI:

export QCOS_API_KEY="sk-your-api-key"

Quickstart — QCOS in 5 Minutes

Step 1: Submit Your First Job

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

from softqcos_sdk import QCOSClient

client = QCOSClient()

# Bell state circuit
qasm = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0], q[1];
measure q[0] -> c[0];
measure q[1] -> c[1];
"""

# Submit and wait for results
result = client.jobs.execute(qasm, shots=1024)
print(result["counts"]) # {"00": ~512, "11": ~512}
# Submit job
softqcos jobs submit --qasm "OPENQASM 2.0; ..." --shots 1024

# Check status
softqcos jobs status job-abc123

# Get results
softqcos jobs results job-abc123 --json
curl -X POST https://api.softquantus.com/api/v2/jobs \
-H "Authorization: Bearer $QCOS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"qasm": "OPENQASM 2.0; include \"qelib1.inc\"; qreg q[2]; creg c[2]; h q[0]; cx q[0], q[1]; measure q[0] -> c[0]; measure q[1] -> c[1];",
"shots": 1024,
"backend": "aer_simulator"
}'

Step 2: Explore Capabilities

# List available backends
backends = client.backends.list()
for b in backends:
print(f" {b['name']} ({b['provider']}) - {b['num_qubits']} qubits")

# Run a benchmark
report = client.bench.run(backend="aer_simulator", suite_id="standard")
print(f"Score: {report['score']}")

# Check calibration data
devices = client.calibration.devices()
state = client.calibration.device_state("aer_simulator")

# Get cost estimate
estimate = client.billing.calculate(
provider="ibm",
backend="ibm_brisbane",
shots=10000,
circuits=5
)
print(f"Estimated cost: ${estimate['total_cost']:.4f}")

Step 3: Verify Evidence

# Every job generates cryptographic evidence
evidence = client.jobs.evidence("job-abc123")
print(f"Hash: {evidence['hash']}")
print(f"Signature: {evidence['signature']}")

# Verify integrity
verification = client.jobs.verify("job-abc123")
print(f"Valid: {verification['valid']}")

Rate Limits

PlanRequests/minRequests/hourConcurrent Jobs
Free601,0005
Professional30010,00050
Enterprise3,000100,000Unlimited

Rate limit headers are included in every response:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1706745600

Base URLs

EnvironmentURL
Productionhttps://api.softquantus.com
Swagger UIhttps://api.softquantus.com/docs
ReDochttps://api.softquantus.com/redoc
OpenAPI JSONhttps://api.softquantus.com/openapi.json

Security Best Practices

  • Never commit API keys to version control
  • Use environment variables or secret managers
  • Rotate keys regularly
  • Use separate keys for dev/staging/prod

GitHub Actions example:

- name: Run quantum tests
env:
QCOS_API_KEY: ${{ secrets.QCOS_API_KEY }}
run: python run_quantum_tests.py

Next Steps