Docs/API Reference

API Reference

Complete API documentation for all Zetyra calculators. Each endpoint accepts JSON payloads and returns structured results with metadata.

Base URL

https://api.zetyra.com/api/v1

All endpoints require authentication via Bearer token in the Authorization header.

CUPED Calculator

POST /calculators/cuped

Request Parameters

ParameterTypeRequiredDescription
Sample Size Parameters
baseline_meanfloatYesExpected baseline mean of the metric
baseline_stdfloatYesExpected standard deviation
mdefloatYesMinimum detectable effect as proportion (e.g., 0.05 for 5%)
alphafloatNoSignificance level, two-sided (default: 0.05)
powerfloatNoStatistical power (default: 0.80)
Correlation Specification (provide correlation OR csv_data)
correlationfloatConditionalPre-computed Pearson correlation between covariate and outcome
csv_datastringConditionalBase64-encoded CSV for correlation calculation from data
metric_columnstringNoColumn name for metric (default: "metric")
covariate_columnstringNoSingle covariate column name (default: "covariate")
covariate_columnsstring[]NoList of covariate columns for multiple regression R²
Additional Options
daily_trafficintNoDaily traffic for days-saved estimation (default: 10000)
covariate_stdfloatNoCovariate standard deviation for optimal coefficient calculation
metric_typestringNo"continuous" | "proportion" (default: "continuous")

Response Structure

{
  "calculation_id": "uuid",
  "results": {
    "original_sample_size": 2453,
    "adjusted_sample_size": 1252,
    "sample_size_reduction_pct": 49.0,
    "original_variance": 625.0,
    "adjusted_variance": 318.75,
    "variance_reduction_pct": 49.0,
    "variance_reduction_factor": 0.51,
    "correlation": 0.7,
    "r_squared": 0.49,
    "is_multiple_covariates": false,
    "num_covariates": 1,
    "regression_coefficients": null,
    "optimal_coefficient": 0.7,
    "original_duration_days": 49.1,
    "adjusted_duration_days": 25.0,
    "days_saved_estimate": 25,
    "difference_score_variance": 375.0,
    "difference_score_sample_size": 1471,
    "ancova_advantage_pct": 14.9,
    "confidence_interval": { "lower": 1180, "upper": 1340 },
    "interpretation": "With a strong correlation...",
    "warnings": null
  },
  "metadata": {
    "computed_at": "2026-01-21T12:00:00.000Z",
    "computation_time_ms": 12.5,
    "parameters": { ... }
  }
}

Group Sequential Design

POST /calculators/gsd

Request Parameters

ParameterTypeDefaultDescription
Core Design Parameters
alphafloat0.025One-sided Type I error rate; total alpha for two-sided tests
powerfloat0.90Statistical power (1 - β)
kint3Number of analyses/looks
timingfloat[]Equal spacingInformation fractions [1/k, 2/k, ..., 1]
effect_sizefloat0.3Standardized effect size (Cohen's d)
Spending Functions
spending_functionstringOBrienFleming"OBrienFleming" | "Pocock" | "HwangShihDecani"
beta_spending_functionstringPocockFutility spending function
Hypothesis Configuration
test_typestringone_sided"one_sided" | "two_sided"
hypothesisstringsuperiority"superiority" | "non_inferiority"
ni_marginfloatnullNon-inferiority margin (negative value, e.g., -0.05)
binding_futilityboolfalseIf false, futility bounds are non-binding

Response Structure

{
  "max_sample_size": 846,
  "expected_sample_size": 720,
  "expected_sample_size_h0": 550,
  "expected_sample_size_h1": 720,
  "fixed_sample_size": 830,
  "boundaries": {
    "efficacy": [3.471, 2.454, 2.004],
    "futility": [-0.251, 0.563, null]
  },
  "information_fractions": [0.333, 0.667, 1.0],
  "cumulative_alpha_spent": [0.0005, 0.014, 0.05],
  "cumulative_beta_spent": [0.019, 0.049, 0.10],
  "stopping_probabilities": {
    "h0": [0.0005, 0.014, 0.05],
    "h1": [0.15, 0.45, 0.90]
  },
  "inflation_factor": 1.9,
  "parameters": { ... }
}

Bayesian Predictive Power (PPoS)

POST /calculators/bayesian

Request Parameters (Continuous Endpoint)

ParameterTypeDefaultDescription
outcome_typestringRequired"continuous" for Normal-Normal model
prior_effectfloat0.0Prior mean effect
prior_variancefloat1.0Prior variance
interim_effectfloat0.0Observed effect at interim
interim_variancefloat0.1Variance of interim effect estimate
interim_nint500Sample size at interim
final_nint1000Planned final sample size
success_thresholdfloat0.95Posterior probability threshold for success
n_simulationsint10000Monte Carlo simulations
seedint42Random seed for reproducibility

Request Parameters (Binary Endpoint)

ParameterTypeDefaultDescription
outcome_typestringRequired"binary" for Beta-Binomial model
prior_alphafloat1.0Beta prior α parameter
prior_betafloat1.0Beta prior β parameter
control_successesint0Observed successes in control arm
control_nint100Current control sample size
treatment_successesint0Observed successes in treatment arm
treatment_nint100Current treatment sample size
final_nint1000Planned final total sample size

Response Structure

{
  "calculation_id": "uuid",
  "results": {
    "predictive_probability": 0.6421,
    "posterior_mean": 0.22,
    "posterior_variance": 0.0085,
    "credible_interval": { "lower": 0.048, "upper": 0.392, "level": 0.95 },
    "recommendation": "continue",  // "stop_for_efficacy" | "continue" | "stop_for_futility"
    "simulations_run": 10000,
    "outcome_type": "continuous"
  },
  "metadata": { ... }
}

Prior Elicitation

POST /calculators/prior-elicitation

Request Parameters

ParameterTypeRequiredDescription
methodstringYes"quantile_matching" | "ess_based" | "historical"
Quantile Matching
medianfloatConditionalTarget median (0-1)
lower_boundfloatConditionalLower credible bound (0-1)
upper_boundfloatConditionalUpper credible bound (0-1)
confidencefloatNoCredible interval level (default: 0.90)
ESS-Based
prior_meanfloatConditionalTarget mean (0-1)
essintConditionalDesired effective sample size
Historical Data
historical_eventsintConditionalNumber of events in historical data
historical_nintConditionalHistorical sample size
discount_factorfloatNoPower prior discount (default: 1.0)
seedintNoRandom seed (default: 42)

Response Structure

{
  "calculation_id": "uuid",
  "results": {
    "alpha": 6.0,
    "beta": 44.0,
    "mean": 0.12,
    "std": 0.045,
    "mode": 0.104,
    "variance": 0.00204,
    "ess": 50.0,
    "credible_interval": { "lower": 0.05, "upper": 0.20, "level": 0.90 },
    "pdf_data": { "x": [...], "density": [...] },
    "cdf_data": { "x": [...], "cdf": [...] },
    "method": "quantile_matching",
    "fit_quality": { "median_achieved": 0.119, "coverage_achieved": 0.897 }
  },
  "metadata": { ... }
}

Bayesian Sample Size

POST /calculators/bayesian-sample-size

Request Parameters

ParameterTypeDefaultDescription
prior_alphafloatRequiredBeta prior α (from Prior Elicitation)
prior_betafloatRequiredBeta prior β (from Prior Elicitation)
null_ratefloatRequiredNull hypothesis threshold θ₀
alternative_ratefloatRequiredDesign alternative θ₁
decision_thresholdfloat0.95Posterior probability threshold γ
target_powerfloat0.80Target power (1-β)
target_type1_errorfloat0.05Maximum acceptable Type I error
n_simulationsint10000Monte Carlo simulations per evaluation
n_min, n_max, n_stepint10, 500, 5Search range parameters
compute_power_curvebooltrueWhether to compute power curve
seedint42Random seed for reproducibility

Response Structure

{
  "calculation_id": "uuid",
  "results": {
    "recommended_n": 85,
    "operating_characteristics": {
      "type1_error": 0.042,
      "power": 0.823,
      "n_simulations": 50000
    },
    "constraints_met": true,
    "decision_rule": { "threshold": 0.95, "null_rate": 0.10, "interpretation": "..." },
    "sensitivity": { "sensitivity_table": [...], "recommended_n": 85 },
    "prior_impact": { "prior_ess": 50.0, "prior_weight": 0.37, "data_weight": 0.63 },
    "power_curve": { "theta": [...], "power": [...] },
    "search_results": { "n_evaluated": 99, "evaluations": [...] }
  },
  "metadata": { ... }
}

Two-Arm Bayesian Design

POST /calculators/bayesian-two-arm

Request Parameters

ParameterTypeDefaultDescription
Prior Parameters
treatment_prior_alphafloatRequiredTreatment arm Beta prior α
treatment_prior_betafloatRequiredTreatment arm Beta prior β
control_prior_alphafloatRequiredControl arm Beta prior α
control_prior_betafloatRequiredControl arm Beta prior β
Design Parameters
treatment_ratefloatRequiredExpected treatment response rate
control_ratefloatRequiredExpected control response rate
design_typestringsuperiority"superiority" | "non_inferiority"
ni_marginfloat0.0Non-inferiority margin (negative)
comparison_typestringdifference"difference" | "ratio"
allocation_ratiofloat1.0N treatment / N control
decision_thresholdfloat0.95Posterior probability threshold
target_powerfloat0.80Target power
target_type1_errorfloat0.05Maximum Type I error
n_simulationsint5000Monte Carlo simulations (5k×5k inner sampling)
seedint42Random seed

Response Structure

{
  "calculation_id": "uuid",
  "results": {
    "recommended_n_per_arm": 75,
    "recommended_n_treatment": 75,
    "recommended_n_control": 75,
    "recommended_n_total": 150,
    "operating_characteristics": { "type1_error": 0.041, "power": 0.825, "n_simulations": 15000 },
    "constraints_met": true,
    "decision_rule": { "design_type": "superiority", "comparison_type": "difference", "threshold": 0.95 },
    "prior_impact": { "treatment_prior_ess": 50, "control_prior_ess": 50 },
    "sensitivity": { "sensitivity_table": [...] }
  },
  "metadata": { ... }
}

Historical Borrowing

POST /calculators/bayesian-borrowing

Request Parameters

ParameterTypeDefaultDescription
methodstringRequired"power_prior" | "commensurate" | "map"
Historical Data
historical_eventsintConditionalEvents in historical study (power_prior/commensurate)
historical_nintConditionalSample size of historical study
discount_factorfloat0.5Power prior discount (0-1)
taufloat1.0Commensurate prior τ parameter
studiesarrayConditionalList of {n_events, n_total} for MAP (min 2)
study_weightsfloat[]nullOptional weights for MAP studies
robust_weightfloat0.1MAP robust component weight
Base Prior & Analysis
base_prior_alphafloat1.0Base prior α
base_prior_betafloat1.0Base prior β
current_eventsintnullCurrent trial events (for conflict check)
current_nintnullCurrent trial n (for conflict check)
null_rate, alternative_ratefloatnullFor sample size comparison
decision_thresholdfloat0.95Posterior probability threshold
n_simulationsint5000Monte Carlo simulations
seedint42Random seed

Response Structure

{
  "calculation_id": "uuid",
  "results": {
    "effective_prior": { "alpha": 13.0, "beta": 89.0 },
    "ess": { "total": 102.0, "from_historical": 100.0, "from_base_prior": 2.0 },
    "prior_summary": { "mean": 0.127, "std": 0.033, "variance": 0.001089 },
    "borrowing_details": {
      "method": "power_prior",
      "discount_factor": 0.5,
      "effective_weight": 0.98,
      "historical_data": { "events": 24, "n": 200, "rate": 0.12 }
    },
    "pdf_data": { "x": [...], "density": [...] },
    "comparison": {
      "with_borrowing": { "n_required": 85, "power": 0.82, "type1_error": 0.04 },
      "without_borrowing": { "n_required": 120, "power": 0.80, "type1_error": 0.05 },
      "comparison": { "sample_size_reduction": 35, "reduction_percentage": 29.2 }
    },
    "conflict_assessment": { "z_score": 0.21, "p_value": 0.83, "conflict_level": "none" },
    "regulatory_notes": [...]
  },
  "metadata": { ... }
}

Need more details?

Each calculator's methodology page includes full mathematical derivations.

Browse Technical Docs