Skip to main content

Federations API

Endpoints for managing cross-organization federations, membership, shared models, privacy budgets, and federated analytics.

Create a federation

POST /api/v1/federations

Creates a new federation for cross-organization collaborative model training.

Body Parameters

ParameterTypeRequiredDescription
namestringYesFederation name (1-128 characters)
org_idstringYesOwning organization identifier
descriptionstringNoHuman-readable description (max 512 chars)

List federations

GET /api/v1/federations

Returns all federations. Optionally filter by org_id or name query parameters.


Retrieve a federation

GET /api/v1/federations/{federation_id}

Join a federation

POST /api/v1/federations/{federation_id}/join

Joins an organization to a federation. Body requires org_id.


Invite members

POST /api/v1/federations/{federation_id}/invite

Sends invitations to organizations. Body requires org_ids (string array).


List members

GET /api/v1/federations/{federation_id}/members

Returns all members with contribution statistics (rounds_contributed, total_samples, avg_accuracy, avg_loss, last_contribution_at).


Share a model

POST /api/v1/federations/{federation_id}/models

Shares a model with the federation. Body requires model_id. Only the federation owner can share models.


List shared models

GET /api/v1/federations/{federation_id}/models

Returns all models shared with the federation.


Get privacy budget

GET /api/v1/federations/{federation_id}/privacy

Returns the current differential privacy budget status.

Response

{
"federation_id": "fed_abc123",
"total_epsilon_budget": 10.0,
"total_delta_budget": 1e-5,
"current_epsilon_spent": 3.2,
"epsilon_remaining": 6.8,
"is_exhausted": false,
"rounds_tracked": 15
}

Set privacy budget

PUT /api/v1/federations/{federation_id}/privacy/budget

Set or update the total differential privacy budget. Body requires total_epsilon_budget (float > 0). Optional total_delta_budget (default 1e-5).


Estimate privacy cost

GET /api/v1/federations/{federation_id}/privacy/estimate

Estimate the epsilon cost of a proposed training round without recording it.

Query Parameters

ParameterTypeRequiredDescription
noise_multiplierfloatYesNoise multiplier (> 0)
sample_ratefloatYesSample rate (between 0 and 1)
num_stepsintNoNumber of steps (minimum 1, default 1)
target_deltafloatNoTarget delta

Response

{
"current_epsilon": 3.2,
"projected_epsilon": 3.85,
"round_epsilon_cost": 0.65,
"would_exceed_budget": false,
"budget_epsilon": 10.0
}

Privacy history

GET /api/v1/federations/{federation_id}/privacy/history

Returns per-round differential privacy parameter history showing epsilon accumulation.


Descriptive statistics

POST /api/v1/federations/{federation_id}/analytics/descriptive

Run descriptive statistics (mean, std, percentiles) across groups.

Body Parameters

ParameterTypeRequiredDescription
variablestringYesVariable to compute statistics for
group_bystringNodevice_group or federation_member (default: device_group)
group_idsstring[]NoSubset of group IDs
include_percentilesbooleanNoInclude 25th/50th/75th (default: true)
filtersobjectNoTime range and platform filters

T-test

POST /api/v1/federations/{federation_id}/analytics/t-test

Run a two-sample t-test between two groups.

Body Parameters

ParameterTypeRequiredDescription
variablestringYesVariable to test
group_astringYesFirst group ID
group_bstringYesSecond group ID
confidence_levelfloatNoDefault 0.95

ANOVA

POST /api/v1/federations/{federation_id}/analytics/anova

Run one-way ANOVA across multiple groups with optional post-hoc pairwise comparisons.


Chi-square test

POST /api/v1/federations/{federation_id}/analytics/chi-square

Run a chi-square test of independence between two categorical variables.

Body Parameters

ParameterTypeRequiredDescription
variable_1stringYesFirst categorical variable
variable_2stringYesSecond categorical variable

List analytics queries

GET /api/v1/federations/{federation_id}/analytics/queries

List past analytics queries. Supports limit and offset pagination.


Retrieve an analytics query

GET /api/v1/federations/{federation_id}/analytics/queries/{query_id}

Returns query details and results.


Errors

StatusErrorDescription
400bad_requestInvalid or missing request fields
401unauthorizedMissing or invalid API key
403forbiddenOrganization does not own the federation
404not_foundResource does not exist
429rate_limitedToo many requests; check Retry-After
500internal_errorUnexpected server error