본문으로 건너뛰기

Routing Policies

fallback/weighted/latency/auto + 오케스트레이터(cascade/parallel) 정책의 생성·조회·수정·삭제. 호출은 model:"orch/<slug>"(policy/<slug> 호환).

라우팅 정책 관리 엔드포인트는 대시보드 세션 토큰(로그인한 JWT)으로 인증합니다 — Authorization: Bearer <JWT>. 대시보드 관리용 API이며 SDK 호환 엔드포인트가 아닙니다. 정책의 동작 방식은 라우팅 정책 기능 문서를 참고하세요.

이 CRUD API는 항상 동작하지만, orch/<slug>(policy/<slug>) 호출은 운영 게이트가 켜져 있어야 합니다 — 기존 4종은 routing.policies_enabled(기본 on),cascade·parallel은 routing.orchestrators_enabled(베타, 기본 off). 게이트가 꺼진 상태의 호출은 400을 반환합니다.

목록 조회 · 생성#

GET/v1/routing-policies
POST/v1/routing-policies
파라미터타입필수설명
slugstring필수호출 식별자. 패턴 ^[a-z0-9][a-z0-9-]{0,62}$. "policy/<slug>" 형태로 사용됩니다. 사용자별 고유(중복 시 409).
display_namestring필수표시 이름. 1~100자.
policy_typestring필수fallback · weighted · latency · auto · cascade · parallel 중 하나. auto는 등록한 풀 안에서 의도(분야)별 벤치마크 최상위 모델을 자동 선택합니다(selected_smart). cascade·parallel은 오케스트레이터(베타) — 자세한 동작은 기능 문서 참고.
entriesarray필수모델 엔트리 1~10개. 필드는 아래 표 참고. cascade에서는 저가→고가 티어 순서, parallel에서는 병렬 워커 풀입니다.
configobject선택오케스트레이션 파라미터(JSON DSL). cascade(hard_categories·judge_model·response_check), parallel(deep_categories·synthesis), 공통 routing_prefs·limits. 구조는 기능 문서 참고.
org_idstring선택조직 공유 — 본인이 멤버인 조직의 UUID. 설정 시 같은 조직 멤버가 호출 가능하고 수정·삭제는 작성자와 조직 owner/admin. 미지정(또는 빈 문자열)이면 개인용.
파라미터타입필수설명
modelstring필수라우팅할 모델 ID. 실제 활성 모델이어야 합니다(1~100자).
weightinteger선택가중치 1~10000. weighted 타입에서만 의미가 있습니다.
retriesinteger선택같은 엔트리 반복 횟수 0~3(기본 0). fallback·cascade 타입에서만 의미가 있습니다.

엔트리에는 단가가 있는 실제 활성 leaf 모델만 허용됩니다. 다른 정책(policy/…), 현재 라우팅 부모(benchmark_smart·analytics_smart·perfect), 단종 부모(pleum-smart·pleum-perfect)는 400으로 거부되며, 존재하지 않거나 비활성인 모델도 400입니다.

POST는 성공 시 201을 반환합니다. 같은 슬러그가 이미 있으면 409. GET /v1/routing-policies는 {items: [...], total: n}을 반환합니다(최신 생성순).

create policy
curl https://apirouter.pleum.ai/v1/routing-policies \
  -H "Authorization: Bearer <JWT>" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "prod-chat",
    "display_name": "Prod Chat",
    "policy_type": "fallback",
    "entries": [
      {"model": "claude-sonnet-4-6", "retries": 1},
      {"model": "gpt-4o", "retries": 0},
      {"model": "gpt-4o-mini", "retries": 0}
    ]
  }'
response
{
  "id": "1f0a4c2e-...",
  "slug": "prod-chat",
  "display_name": "Prod Chat",
  "policy_type": "fallback",
  "entries": [
    {"model": "claude-sonnet-4-6", "retries": 1},
    {"model": "gpt-4o", "retries": 0},
    {"model": "gpt-4o-mini", "retries": 0}
  ],
  "is_active": true,
  "created_at": "2026-07-01T09:00:00Z",
  "updated_at": "2026-07-01T09:00:00Z"
}

수정 · 삭제#

PATCH/v1/routing-policies/{policy_id}
DELETE/v1/routing-policies/{policy_id}

PATCH는 보낸 필드만 수정합니다(display_name·policy_type·entries·is_active). slug는 변경할 수 없습니다. 내 소유가 아니거나 없는 정책은 404. DELETE는 {"ok": true}를 반환합니다. is_active: false로 끄면 삭제 없이 호출만 막을 수 있습니다.

deactivate policy
curl -X PATCH https://apirouter.pleum.ai/v1/routing-policies/1f0a4c2e-... \
  -H "Authorization: Bearer <JWT>" \
  -H "Content-Type: application/json" \
  -d '{"is_active": false}'