HTTP API

Director

POST/api/v1/director/policies
POST
/api/v1/director/policies

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Create (or version) a pacing policy. Admin only.

Response Body

application/json

curl -X POST "https://example.com/api/v1/director/policies" \  -H "Content-Type: application/json" \  -d '{    "budgets": {      "ease_off_min_seconds": 0.1,      "event_budget_per_cycle": 0,      "min_seconds_between_peaks": 0.1,      "spawn_budget_per_cycle": 0    },    "estimator": {      "clamp": [        0.1      ],      "decay_half_life_seconds": 0.1    },    "id": "string",    "signal_weights": {      "property1": 0.1,      "property2": 0.1    },    "target_curve": {      "cycle_seconds": 0.1,      "floor_intensity": 0.1,      "peak_intensity": 0.1,      "tolerance_band": 0.1    }  }'
{  "created_at": "2019-08-24T14:15:22Z",  "policy_id": "string",  "version": 0}
GET/api/v1/director/policies/{policy_id}
GET
/api/v1/director/policies/{policy_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

policy_id*string

Response Body

application/json

curl -X GET "https://example.com/api/v1/director/policies/string"
{  "policy": {    "budgets": {      "ease_off_min_seconds": 0.1,      "event_budget_per_cycle": 0,      "min_seconds_between_peaks": 0.1,      "spawn_budget_per_cycle": 0    },    "created_at": "2019-08-24T14:15:22Z",    "created_by": "string",    "deterministic": {      "per_session_seed": true    },    "estimator": {      "clamp": [        0.1      ],      "decay_half_life_seconds": 0.1    },    "id": "string",    "signal_weights": {      "property1": 0.1,      "property2": 0.1    },    "target_curve": {      "cycle_seconds": 0.1,      "floor_intensity": 0.1,      "peak_intensity": 0.1,      "shape": "sawtooth_relax",      "tolerance_band": 0.1    },    "updated_at": "2019-08-24T14:15:22Z",    "variant_split": {      "arms": [        {          "label": "string",          "weight": 0        }      ],      "control_label": "string",      "gate_flag_key": "string"    },    "version": 0  }}
GET/api/v1/director/policies/{policy_id}/analytics
GET
/api/v1/director/policies/{policy_id}/analytics

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

policy_id*string

Query Parameters

variant_breakdown?boolean

When true, break metrics down by A/B variant.

Response Body

application/json

curl -X GET "https://example.com/api/v1/director/policies/string/analytics"
{  "overall": {    "completion_rate": 0.1,    "mean_realized_intensity": 0.1,    "mean_target_intensity": 0.1,    "outcomes": {      "abandon": 0,      "completion": 0,      "rage_quit": 0    },    "peak_count": 0,    "rage_quit_rate": 0.1,    "sessions": 0,    "time_in_band_ratio": 0.1,    "variant": "string"  },  "policy_id": "string",  "total_sessions": 0,  "variants": [    {      "completion_rate": 0.1,      "mean_realized_intensity": 0.1,      "mean_target_intensity": 0.1,      "outcomes": {        "abandon": 0,        "completion": 0,        "rage_quit": 0      },      "peak_count": 0,      "rage_quit_rate": 0.1,      "sessions": 0,      "time_in_band_ratio": 0.1,      "variant": "string"    }  ]}
GET/api/v1/director/policies/{policy_id}/versions
GET
/api/v1/director/policies/{policy_id}/versions

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

policy_id*string

Response Body

application/json

curl -X GET "https://example.com/api/v1/director/policies/string/versions"
{  "current_version": 0,  "policy_id": "string",  "versions": [    0  ]}
POST/api/v1/director/sessions
POST
/api/v1/director/sessions

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Start a director session bound to a policy.

Response Body

application/json

curl -X POST "https://example.com/api/v1/director/sessions" \  -H "Content-Type: application/json" \  -d '{    "policy_id": "string"  }'
{  "policy_id": "string",  "policy_version": 0,  "scope": "per_session",  "seed": 0,  "session_id": "string",  "started_at": "2019-08-24T14:15:22Z",  "variant": "string"}
GET/api/v1/director/sessions/{session_id}
GET
/api/v1/director/sessions/{session_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

session_id*string

Response Body

application/json

curl -X GET "https://example.com/api/v1/director/sessions/string"
{  "budgets_remaining": {    "event": 0,    "spawn": 0  },  "estimate": {    "as_of": "2019-08-24T14:15:22Z",    "intensity": 0.1  },  "last_peak_at": "2019-08-24T14:15:22Z",  "policy_id": "string",  "policy_version": 0,  "scope": "per_session",  "seed": 0,  "session_id": "string",  "started_at": "2019-08-24T14:15:22Z",  "variant": "string",  "world_context": {    "use_virtual_time": true,    "world_id": "string"  }}
GET/api/v1/director/sessions/{session_id}/curve
GET
/api/v1/director/sessions/{session_id}/curve

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

session_id*string

Response Body

application/json

curl -X GET "https://example.com/api/v1/director/sessions/string/curve"
{  "decisions": [    {      "action": {        "cooldown_seconds": 0.1,        "cost": 0,        "size": 0,        "type": "spawn_wave"      },      "at": "2019-08-24T14:15:22Z",      "current_intensity": 0.1,      "decision_index": 0,      "phase": "build_up",      "rationale": "string",      "seed_draw": 0.1,      "session_id": "string",      "target_intensity": 0.1    }  ],  "session_id": "string",  "target_curve": {    "cycle_seconds": 0.1,    "floor_intensity": 0.1,    "peak_intensity": 0.1,    "shape": "sawtooth_relax",    "tolerance_band": 0.1  },  "trajectory": [    {      "at": "2019-08-24T14:15:22Z",      "phase": "build_up",      "realized_intensity": 0.1,      "target_intensity": 0.1    }  ]}
GET/api/v1/director/sessions/{session_id}/decision
GET
/api/v1/director/sessions/{session_id}/decision

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

session_id*string

Response Body

application/json

curl -X GET "https://example.com/api/v1/director/sessions/string/decision"
{  "budgets_remaining": {    "event": 0,    "spawn": 0  },  "decision": {    "action": {      "cooldown_seconds": 0.1,      "cost": 0,      "size": 0,      "type": "spawn_wave"    },    "at": "2019-08-24T14:15:22Z",    "current_intensity": 0.1,    "decision_index": 0,    "phase": "build_up",    "rationale": "string",    "seed_draw": 0.1,    "session_id": "string",    "target_intensity": 0.1  }}
POST/api/v1/director/sessions/{session_id}/outcome
POST
/api/v1/director/sessions/{session_id}/outcome

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

session_id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Record an outcome signal for a session, closing the tuning loop.

Response Body

application/json

curl -X POST "https://example.com/api/v1/director/sessions/string/outcome" \  -H "Content-Type: application/json" \  -d '{    "outcome": "completion"  }'
{  "count": 0,  "session_id": "string",  "variant": "string"}
POST/api/v1/director/sessions/{session_id}/signal
POST
/api/v1/director/sessions/{session_id}/signal

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

session_id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Report one or more weighted intensity signals for a session.

Response Body

application/json

curl -X POST "https://example.com/api/v1/director/sessions/string/signal" \  -H "Content-Type: application/json" \  -d '{    "signals": [      {        "magnitude": 0.1,        "type": "string"      }    ]  }'
{  "accepted": 0,  "budgets_remaining": {    "event": 0,    "spawn": 0  },  "decision": null,  "estimate": {    "as_of": "2019-08-24T14:15:22Z",    "intensity": 0.1  },  "session_id": "string"}
POST/api/v1/director/sessions/{session_id}/subscribe
POST
/api/v1/director/sessions/{session_id}/subscribe

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

session_id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Provision push delivery of decisions for a session.

Response Body

application/json

curl -X POST "https://example.com/api/v1/director/sessions/string/subscribe" \  -H "Content-Type: application/json" \  -d '{    "channel": "pubsub",    "target": "string"  }'
{  "message": "string",  "subscription": {    "channel": "pubsub",    "created_at": "2019-08-24T14:15:22Z",    "created_by": "string",    "session_id": "string",    "target": "string",    "webhook_id": "string"  }}

On this page