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
- Go to portal.softquantus.com
- Navigate to Settings → API Keys
- Click Generate New Key
Key Types
| Type | Prefix | Permissions |
|---|---|---|
| Standard | sk- | Full API access |
| Admin | sk-admin- | Admin operations |
| Read-Only | sk-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
| Plan | Requests/min | Requests/hour | Concurrent Jobs |
|---|---|---|---|
| Free | 60 | 1,000 | 5 |
| Professional | 300 | 10,000 | 50 |
| Enterprise | 3,000 | 100,000 | Unlimited |
Rate limit headers are included in every response:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1706745600
Base URLs
| Environment | URL |
|---|---|
| Production | https://api.softquantus.com |
| Swagger UI | https://api.softquantus.com/docs |
| ReDoc | https://api.softquantus.com/redoc |
| OpenAPI JSON | https://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
- API Reference — Full REST API documentation
- SDK Reference — Python SDK methods
- CLI Reference — Command-line interface
- Tutorials — Step-by-step guides