Documentation

API Reference

Everything you need to run neuromorphic simulations from any language.

Base URL: https://api.catalyst-neuromorphic.com

Python SDK (recommended)

pip install catalyst-cloud
import catalyst_cloud as cc

client = cc.Client("cn_live_...")
net = client.create_network(
    populations=[{"label": "input", "size": 100, "params": {"threshold": 1000}}],
    connections=[],
)
job = client.simulate(net["network_id"], timesteps=500,
    stimuli=[{"population": "input", "current": 5000}])
print(f"Spikes: {job['result']['total_spikes']}")

PyPI · GitHub · Interactive demo

Quick start (REST API)

1. Get an API key

Free. No credit card required.

curl -X POST https://api.catalyst-neuromorphic.com/v1/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "tier": "free"}'

# Response:
# {
#   "api_key": "cn_live_...",
#   "tier": "free",
#   "limits": {"max_neurons": 1024, "max_timesteps": 1000, ...}
# }

2. Define a network

Populations of spiking neurons with connections between them.

curl -X POST https://api.catalyst-neuromorphic.com/v1/networks \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cn_live_..." \
  -d '{
    "populations": [
      {"label": "excitatory", "size": 100, "params": {"threshold": 1000, "leak": 10}},
      {"label": "inhibitory", "size": 25, "params": {"threshold": 800, "leak": 5}}
    ],
    "connections": [
      {"source": "excitatory", "target": "inhibitory", "topology": "random_sparse",
       "p": 0.2, "weight": 600},
      {"source": "inhibitory", "target": "excitatory", "weight": -400}
    ]
  }'

# Response:
# {"network_id": "net_...", "total_neurons": 125, "populations": 2, "connections": 2}

3. Run a simulation

Submit a job with stimuli. It runs asynchronously and you poll for results.

curl -X POST https://api.catalyst-neuromorphic.com/v1/jobs \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cn_live_..." \
  -d '{
    "network_id": "net_...",
    "timesteps": 1000,
    "stimuli": [
      {"population": "excitatory", "neurons": [0,1,2,3,4], "current": 8000}
    ]
  }'

# Response: {"job_id": "job_...", "status": "queued"}

# Poll for results:
curl https://api.catalyst-neuromorphic.com/v1/jobs/job_... \
  -H "X-API-Key: cn_live_..."

# When status is "completed":
# {
#   "status": "completed",
#   "result": {
#     "total_spikes": 847,
#     "firing_rates": {"excitatory": 0.0052, "inhibitory": 0.0128},
#     "spike_count_timeseries": [5, 12, 3, ...]
#   },
#   "compute_seconds": 0.34
# }

4. Get spike trains

Full per-neuron spike times, indexed by population label and local neuron index.

curl https://api.catalyst-neuromorphic.com/v1/jobs/job_.../spikes \
  -H "X-API-Key: cn_live_..."

# Response:
# {
#   "spike_trains": {
#     "excitatory": {"0": [12, 45, 78], "1": [13, 47], "4": [11, 44, 77, 110]},
#     "inhibitory": {"0": [14, 48], "3": [15, 49, 82]}
#   }
# }

Endpoint reference

POST /v1/signup Public

Create a new account and get an API key.

Request body:

emailstring, required
tier"free" (default), "researcher", "startup", "enterprise"
POST /v1/networks Requires X-API-Key

Store a network definition for later job submission.

Request body:

populationsarray of label, size, params
connectionsarray of source, target, topology, weight, p, delay, compartment

Neuron params (all optional):

thresholdint (default 1000) — spike threshold
leakint (default 3) — membrane leak rate
restingint (default 0) — resting potential
refracint (default 3) — refractory period
dend_thresholdint (default 500) — dendritic compartment threshold

Connection options:

topologyall_to_all, one_to_one, random_sparse, fixed_fan_in, fixed_fan_out
weightint [-32768, 32767] (default 200) — negative for inhibitory
pfloat [0, 1] — connection probability (random_sparse)
delayint [0, 63] — synaptic delay in timesteps
compartmentint [0, 3] — target dendritic compartment
POST /v1/jobs Requires X-API-Key

Submit a simulation job. Returns immediately with job_id.

network_idstring, required — from POST /v1/networks
timestepsint, required — number of simulation steps
stimuliarray of population, neurons (optional), current
learningenabled, graded, dendritic, noise, three_factor
rewardsarray of timestep, value — for 3-factor learning
GET /v1/jobs/job_id Requires X-API-Key

Get job status and summary results. Poll until status is "completed" or "failed".

Response fields (when completed):

result.total_spikesint — total spikes across all neurons
result.firing_ratesper-population mean spikes per neuron per timestep
result.spike_count_timeseriesarray — total spikes at each timestep
compute_secondsfloat — actual simulation compute time
GET /v1/jobs/job_id/spikes Requires X-API-Key

Full spike trains grouped by population with local neuron indices.

Response:

{"spike_trains": {"excitatory": {"0": [12, 45], "1": [13]}, "inhibitory": {"0": [14, 48]}}}
GET /v1/usage Requires X-API-Key

Your current usage stats and estimated cost.

jobs_todayint — jobs submitted today
jobs_limit_todayint — daily limit for your tier
compute_seconds_this_monthfloat — total compute this billing cycle
estimated_cost_gbpfloat — estimated cost at your tier rate

Error codes

400Invalid request — check your JSON format
401Missing or invalid API key
403Tier limit exceeded (neurons, timesteps)
404Network or job not found
409Email already registered
429Daily job limit reached — upgrade your tier

Interactive docs also available at

OpenAPI Explorer →