---
title: "Create a program category. Roles: admin."
method: POST
path: "/api/program-categories"
tags: ["Programs"]
---

# Create a program category. Roles: admin.

`POST /api/program-categories`

## Request body

- ProgramCategoryCreateRequest
  - `name` string, required
  - `description` string
  - `required` boolean
  - `downgradePolicyCode` 'NEVER' | 'DURING_RENEWAL' | 'ALWAYS_NO_REFUND' | 'ALWAYS_REFUND' | 'ALWAYS_REFUND_LESS_FEES', required
  - `membershipId` integer, required
  - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS', required
  - `tierBehaviorCode` 'NONE' | 'REPLACE_ON_ENROLL' | 'REPLACE_ON_COMPLETION', required

## Response `200`

OK

- ProgramCategoryResponse
  - `success` boolean
  - `error` string
  - `programCategory` ProgramCategoryCore
    - `audit` Audit
      - `createdTime` string, date-time
      - `modifiedTime` string, date-time
      - `modifiedBy` string
    - `alternateLocales` object
      - `empty` boolean
    - `programCategoryId` integer
    - `membershipId` integer
    - `typeCode` 'CERTIFICATION' | 'CHALLENGE' | 'MEMBERSHIP' | 'PASS'
    - `name` string
    - `description` string
    - `required` boolean
    - `tierBehaviorCode` 'NONE' | 'REPLACE_ON_ENROLL' | 'REPLACE_ON_COMPLETION'
    - `downgradePolicyCode` 'NEVER' | 'DURING_RENEWAL' | 'ALWAYS_NO_REFUND' | 'ALWAYS_REFUND' | 'ALWAYS_REFUND_LESS_FEES'
    - `locale` string

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `500` — Internal server error

---

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