Arbitration profiles define how the platform balances competing business objectives (revenue, margin, propensity, engagement, etc.) when ranking offers. Each profile specifies a set of weights that the arbitration engine uses to compute a composite score.
See the Architecture — Engine page for details on how arbitration profiles are used during decision flow execution.
Base path
/api/v1/arbitration-profiles
List arbitration profiles
GET /api/v1/arbitration-profiles
Returns all arbitration profiles for the current tenant, ordered by creation date (newest first).
Response 200
[
{
"id": "ap_001",
"tenantId": "t_001",
"name": "Revenue Focused",
"description": "Prioritize revenue-generating offers.",
"weights": {
"revenue": 0.5,
"margin": 0.2,
"propensity": 0.2,
"engagement": 0.1
},
"config": {},
"createdAt": "2026-03-10T12:00:00.000Z",
"updatedAt": "2026-03-12T09:30:00.000Z"
}
]
Error codes
| Code | Reason |
|---|
401 | Missing or invalid API key. |
Create an arbitration profile
POST /api/v1/arbitration-profiles
Creates a new arbitration profile.
Request body
| Field | Required | Type | Description |
|---|
name | Yes | string (1-200) | Unique profile name. |
description | No | string (max 1000) | Profile description. Default "". |
weights | No | object | Map of objective names to weight values (0-1). Default {}. |
config | No | object | Additional configuration. Default {}. |
Weight values should be between 0 and 1. While they do not need to sum to 1, it is recommended for interpretability.
Example request
{
"name": "Revenue Focused",
"description": "Prioritize revenue-generating offers.",
"weights": {
"revenue": 0.5,
"margin": 0.2,
"propensity": 0.2,
"engagement": 0.1
}
}
Response 201
Returns the created arbitration profile object.
Error codes
| Code | Reason |
|---|
400 | Validation error (missing name, weight out of range). |
415 | Content-Type is not application/json. |
Update an arbitration profile
PUT /api/v1/arbitration-profiles
Updates an existing arbitration profile. Only provided fields are changed.
Request body
| Field | Required | Type | Description |
|---|
id | Yes | string | The profile ID to update. |
name | No | string (1-200) | Updated name. |
description | No | string (max 1000) | Updated description. |
weights | No | object | Updated weight map. |
config | No | object | Updated configuration. |
Example request
{
"id": "ap_001",
"weights": {
"revenue": 0.3,
"margin": 0.3,
"propensity": 0.3,
"engagement": 0.1
}
}
Response 200
Returns the updated arbitration profile object.
Error codes
| Code | Reason |
|---|
400 | Validation error. |
Delete an arbitration profile
DELETE /api/v1/arbitration-profiles?id={profileId}
Deletes an arbitration profile by ID.
Query parameters
| Parameter | Required | Type | Description |
|---|
id | Yes | string | Profile ID to delete. |
Response 200
Error codes
| Code | Reason |
|---|
400 | Missing id query parameter. |
Role requirements
| Method | Minimum role |
|---|
| GET | viewer |
| POST | editor |
| PUT | editor |
| DELETE | admin |