Signal Intelligence API

Quantum Signal Characterisation

First-principles signal analysis without training data, protocol libraries, or GPUs. Send any time-series. Get structural characterisation back. No signal-specific tuning required.

Overview   API Operational — v1.0.0

What This Does

The API accepts raw time-series data — voltage samples, ADC readings, or derived magnitude (e.g. √(I²+Q²)) — and returns a structural characterisation of what the signal is doing. It works on radio signals, sensor streams, financial data, or any continuous measurement.

How It Works

Your data is converted into state-space trajectories. Adaptive thresholding identifies significant state transitions. Unsupervised anomaly gating filters noise. Spike-based coincidence scoring measures structural similarity. Multi-lag autocorrelation captures temporal patterns. Twelve mathematical phenomena detectors surface anomalous signatures.

The pipeline runs server-side. You receive only the characterisation — classification tags, temporal profile, anomaly level, and detected phenomena.

What Makes It Different

  • No training data: Fully unsupervised. Works on signals never seen before.
  • Not pattern matching: Characterises mathematical structure, not protocol signatures.
  • Universal input: Any time-series. RF, vibration, medical, financial, quantum hardware.
  • Structural output: Not just "anomaly detected" but what kind of anomaly.
  • Edge-ready: Designed for neuromorphic hardware at milliwatt power.
API Reference Authentication: X-API-Key header

Endpoints

Base URL: https://signal.sparse-supernova.com

POST Analyse time-series data
https://signal.sparse-supernova.com/api/characterise
GET Run on built-in demo signal
https://signal.sparse-supernova.com/api/demo
GET Service health check
https://signal.sparse-supernova.com/api/health

Request Format

Endpoint: POST /api/characterise

Headers:

  • X-API-Key: Your API key
  • Content-Type: application/json

Body schema:

{ "samples": [0.12, -0.34, 0.56, ...], "config": { "sample_rate_hz": 44100 } }

Field reference

samples (required)

  • Flat list of numbers. Minimum 128, maximum 100,000. For long captures, split into windows (10k–100k) and send sequentially.
  • Format: voltage, amplitude, or magnitude.
  • Scale: API is scale-invariant. Send raw ADC (e.g. 0–4096) or normalized floats (−1.0 to 1.0). No pre-normalization required.
  • RF / Rydberg / SDR: Do not send interleaved I/Q. Send magnitude √(I²+Q²) per sample as the array.

config (optional)

  • Omit for 99% of use cases. The system auto-tunes thresholds and windowing.
  • Include only if you need to override sample_rate_hz for temporal accuracy (defaults to 1 Hz if omitted; affects frequency labels, not classification).

For lowest cost/carbon: downsample to the smallest window that preserves structure (often 10k–50k) and send magnitude rather than raw I/Q.

Integration tips

  • Python: Set User-Agent (e.g. QuantumSignalClient/1.0) to avoid Cloudflare blocking default Python-urllib.
  • RF / Rydberg: Send magnitude √(I²+Q²); scale-invariant; omit config unless overriding sample_rate_hz.

Response Fields

FieldDescription
characterisation.classificationArray of tags: STRUCTURED, ANTI_CORRELATED, MODULATED, etc.
characterisation.temporal_profileCORRELATED, ANTI_CORRELATED, or NEUTRAL
characterisation.anomaly_levelHIGH, MODERATE, or LOW
characterisation.confidence0.0 – 1.0 classification confidence
phenomena_detectedArray of triggered mathematical detectors with confidence
metricsRaw/anomalous event counts, autocorrelation lags, burst ratio
processingThreshold method, trajectory count, processing time

Example Response

{ "success": true, "characterisation": { "classification": ["STRUCTURED", "ACTIVE", "MODULATED", "HIGH_ANOMALY"], "temporal_profile": "CORRELATED", "activity_level": "HIGH", "anomaly_level": "HIGH", "confidence": 0.82 }, "phenomena_detected": [ { "detector": "information_backflow", "confidence": 0.71 }, { "detector": "quantum_darwinism", "confidence": 0.58 }, { "detector": "criticality", "confidence": 0.63 } ], "metrics": { "raw_events": 1728, "anomalous_events": 106, "gating_reduction": "93.9%", "autocorrelation_lag1": 0.089, "autocorrelation_lag2": -0.041, "autocorrelation_lag3": 0.032, "burst_ratio": 0.496 }, "processing": { "threshold": 0.3179, "threshold_method": "MAD", "processing_time_ms": 230 } }
Live Testing Demo key: demo-sparse-supernova-2026

Try It Now

Run the analysis on the built-in demo signal, or paste your own samples.

First request after idle may be 1–3s slower (cold start). Subsequent requests are fast.

Ready
Detectors 12 mathematical signatures

What We Detect

The pipeline tests for twelve mathematical phenomena in every signal. Each detector asks a specific structural question — not "is this a known protocol?" but "is this signal doing something mathematically unusual?"

Physical Phenomena

  • Quantum Zeno: Measurement frequency correlates with delayed transitions
  • Criticality: Self-organised criticality in event magnitude distribution
  • Information Backflow: Non-Markovian temporal correlations
  • Fractal Dimension: Chaotic structure in state-space trajectories
  • Topological Transitions: Phase changes in signal geometry
  • Penrose OR: Gravity-scale collapse events

Structural Signatures

  • Weak Values: Anomalous measurement outcomes outside expected bounds
  • Quantum Darwinism: Environmental redundancy and information copying
  • Retrocausality: Future events correlating with past states
  • Teleportation Shadow: Cross-channel correlations without direct coupling
  • Simulation Glitches: Quantisation artifacts and periodic patterns
  • Consciousness Correlation: Observer-dependent measurement bias
Integration

Quick Start

Copy-paste the snippet for your stack. No config needed — the system auto-tunes.

Python (recommended for data science / Rydberg)

import requests import numpy as np # 1. Generate Data (Example: Gaussian Noise) # Note: Noise often trends to ANTI_CORRELATED or low structure; may show STRUCTURED depending on gating/windowing. data = np.random.normal(0, 1, 5000).tolist() # Pro Tip: To see "STRUCTURED" detection, use a sine wave instead: # t = np.linspace(0, 1, 5000) # data = (np.sin(2 * np.pi * 50 * t)).tolist() # 2. Request — no config needed; optional: {"samples": data, "config": {"sample_rate_hz": 44100}} url = "https://signal.sparse-supernova.com/api/characterise" headers = { "X-API-Key": "demo-sparse-supernova-2026", "Content-Type": "application/json", "User-Agent": "QuantumSignalClient/1.0", } print(f"Sending {len(data)} samples to Sparse Supernova...") response = requests.post(url, headers=headers, json={"samples": data}) # 3. Results if response.status_code == 200: result = response.json() print("Classification:", result["characterisation"]["classification"]) print("Phenomena:", [p["detector"] for p in result["phenomena_detected"]]) else: print("Error:", response.text)

Expectations: Noise often trends to ANTI_CORRELATED or low structure (may show STRUCTURED depending on gating/windowing). Sine → STRUCTURED. The snippet prints Phenomena (e.g. Quantum Zeno, Criticality). RF/IQ: Send magnitude √(I²+Q²); set User-Agent to avoid Cloudflare blocks.

cURL (Linux / Mac / WSL)

Minimum 128 samples: The API rejects payloads with fewer than 128 samples (400 Bad Request). Example 1 is for documentation; example 2 is a bash-only quick test (generates 150 samples with positive bias; for a symmetric signal test use a small JSON file or the Python snippet).

# 1. Documentation example (replace ... with 125+ more values or use #2) curl -X POST https://signal.sparse-supernova.com/api/characterise \ -H "X-API-Key: demo-sparse-supernova-2026" \ -H "Content-Type: application/json" \ -d '{"samples": [0.1, -0.3, 0.5, ...]}' # min 128 samples # 2. Bash-only quick test (generates 150 samples; 0.xxx positive bias) curl -X POST https://signal.sparse-supernova.com/api/characterise \ -H "X-API-Key: demo-sparse-supernova-2026" \ -H "Content-Type: application/json" \ -d "{\"samples\": [$(for i in {1..150}; do echo -n \"0.$RANDOM,\"; done | sed 's/,$//')]}"

JavaScript / Node

// 1. Generate dummy data (min 128 samples required) const samples = Array.from({ length: 200 }, () => Math.random() * 2 - 1); // 2. Async wrapper — runs in Node 18+ or Browser (async () => { try { const resp = await fetch( "https://signal.sparse-supernova.com/api/characterise", { method: "POST", headers: { "X-API-Key": "demo-sparse-supernova-2026", "Content-Type": "application/json", }, body: JSON.stringify({ samples }) } ); if (!resp.ok) { throw new Error(`API Error: ${resp.status} ${await resp.text()}`); } const result = await resp.json(); // 3. Signal Intelligence output console.log("Classification:", result.characterisation.classification); console.log("Phenomena:", result.phenomena_detected); } catch (error) { console.error("Failed:", error.message); } })();

SDR / Rydberg

Speaks hardware language: magnitude √(I²+Q²), not raw JSON. Fits Unix pipelines (rtl_sdr, GNU Radio). Converting I/Q to magnitude before upload cuts bandwidth by 50%. Save the script below as iq_to_magnitude.py so the pipeline runs.

# INTEGRATION EXAMPLE: RTL-SDR → SPARSE SUPERNOVA # Pipe live radio → magnitude (JSON) → API rtl_sdr -f 462.5625e6 -s 2.4e6 -n 48000 - | \ python3 iq_to_magnitude.py | \ curl -X POST "https://signal.sparse-supernova.com/api/characterise" \ -H "X-API-Key: demo-sparse-supernova-2026" \ -H "Content-Type: application/json" \ -d @-

Save as iq_to_magnitude.py

# Fixed-size demo read: 48,000 complex samples → 96,000 bytes interleaved u8 IQ (I,Q,I,Q,…). Use -n 48000 with rtl_sdr. For streaming, read stdin in a loop instead. import sys, numpy as np, json raw = sys.stdin.buffer.read() # or read(96000) for exactly one -n 48000 chunk y = np.frombuffer(raw, dtype=np.uint8).astype(float) y = (y - 127.5) / 127.5 # Normalize to -1..1 i, q = y[0::2], y[1::2] magnitude = np.sqrt(i**2 + q**2) # √(I²+Q²) print(json.dumps({"samples": magnitude.tolist()}))