Skip to main content
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

CodeReason
401Missing or invalid API key.

Create an arbitration profile

POST /api/v1/arbitration-profiles
Creates a new arbitration profile.

Request body

FieldRequiredTypeDescription
nameYesstring (1-200)Unique profile name.
descriptionNostring (max 1000)Profile description. Default "".
weightsNoobjectMap of objective names to weight values (0-1). Default {}.
configNoobjectAdditional 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

CodeReason
400Validation error (missing name, weight out of range).
415Content-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

FieldRequiredTypeDescription
idYesstringThe profile ID to update.
nameNostring (1-200)Updated name.
descriptionNostring (max 1000)Updated description.
weightsNoobjectUpdated weight map.
configNoobjectUpdated 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

CodeReason
400Validation error.

Delete an arbitration profile

DELETE /api/v1/arbitration-profiles?id={profileId}
Deletes an arbitration profile by ID.

Query parameters

ParameterRequiredTypeDescription
idYesstringProfile ID to delete.

Response 200

{
  "success": true
}

Error codes

CodeReason
400Missing id query parameter.

Role requirements

MethodMinimum role
GETviewer
POSTeditor
PUTeditor
DELETEadmin