---
title: "Recommend the best route for a capability"
method: POST
path: "/domains/{domainKey}/capabilities/{capabilityId}/recommend"
tags: ["routing"]
---

# Recommend the best route for a capability

`POST /domains/{domainKey}/capabilities/{capabilityId}/recommend`

## Path parameters

- `domainKey` string, required
- `capabilityId` string, required

## Headers

- `Authorization` string, required

## Request body

- CapabilityInput — Capability-specific request body. Use the contract endpoint for exact fields.

## Response `200`

Route recommendation

- RecommendationResponse
  - `success` true, required
  - `productKey` string
  - `preferenceSource` string
  - `optimizationPreferences` string[]
  - `recommendedProvider` string, required
  - `recommendedRouteKey` string, required
  - `recommendedRouteMode` 'managed' | 'byo' | 'redirect', required
  - `canExecuteNow` boolean, required
  - `bestExecutableProvider` string
  - `bestExecutableRouteKey` string
  - `bestExecutableRouteMode` string
  - `bestWorkflowRecommendation` WorkflowRecommendation
    - `workflowType` string, required
    - `summary` string, required
    - `managedAfterAcquisition` boolean
    - `acquisitionCapabilityKey` string
    - `acquisitionRouteKey` string
    - `acquisitionProvider` string
    - `acquisitionPriceCredits` number, double
    - `executeRouteKey` string
    - `executeProvider` string
    - `executePriceCredits` number, double
    - `estimatedFirstExecutionTotalCredits` number, double
    - `recurringExecutionCredits` number, double
    - `blockingRequirements` string[], required
    - `nextActions` string[], required
    - `reasons` string[], required
  - `blockingRequirements` string[], required
  - `nextActions` string[], required
  - `candidates` RecommendationCandidate[], required
    - `provider` string, required
    - `routeKey` string, required
    - `routeMode` 'managed' | 'byo' | 'redirect', required
    - `canExecuteNow` boolean, required
    - `score` number, double, required
    - `priceCredits` number, double, required
    - `trackingSupported` boolean
    - `supportedFeatures` string[], required
    - `settlementRail` string
    - `blockingRequirements` string[], required
    - `nextActions` string[], required
    - `reasons` string[], required
  - `workflowRecommendations` WorkflowRecommendation[], required
    - `workflowType` string, required
    - `summary` string, required
    - `managedAfterAcquisition` boolean
    - `acquisitionCapabilityKey` string
    - `acquisitionRouteKey` string
    - `acquisitionProvider` string
    - `acquisitionPriceCredits` number, double
    - `executeRouteKey` string
    - `executeProvider` string
    - `executePriceCredits` number, double
    - `estimatedFirstExecutionTotalCredits` number, double
    - `recurringExecutionCredits` number, double
    - `blockingRequirements` string[], required
    - `nextActions` string[], required
    - `reasons` string[], required

## Other responses

- `401` — Missing or invalid AgentRouter API key
- `404` — Requested resource was not found

---

[API](https://skmtc.dev/agentrouter/apis/agentrouter-api.md) · [All operations](https://skmtc.dev/agentrouter/apis/agentrouter-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/agentrouter/agentrouter-api/revisions/7ee5c80ca6da/schema)
