---
title: "List Upskill Plan Templates"
method: GET
path: "/api/v2/careerhub/upskill-plan-templates"
tags: ["Upskill Plan Template"]
---

# List Upskill Plan Templates

`GET /api/v2/careerhub/upskill-plan-templates`

## Request

- Base URL: `https://apiv2.eightfold.ai`
- URL: `https://apiv2.eightfold.ai/api/v2/careerhub/upskill-plan-templates`
- Auth: none declared. Required headers: `Authorization`
- TypeScript: <https://skmtc.dev/eightfold/apis/api-server-v2-service-service/docs/api/v2/careerhub/upskill-plan-templates/get.ts> (a function with typed inputs; its response is checked against the schema)

List upskilling plan templates, most recently updated first. API-key callers get every template in the tenant; signed-in callers get the templates they own. Advance `start` by `limit` to read the next page.

## Query parameters

- `start` integer
- `limit` integer
- `exclude` string
- `keyList` string

## Headers

- `Authorization` string, required

## Response `200`

OK

- object
  - `data` UpskillingPlanTemplateSchema[]
    - `status` string, nullable: Template status: draft | published
    - `id` integer, nullable: Template plan id
    - `createdAt` integer, nullable: Created timestamp (epoch seconds)
    - `planSubtype` string, nullable: Plan subtype
    - `sections` UpskillingPlanSectionSchema[], nullable: Ordered sections with their entities; progress is not set on templates
      - `sectionName` string, nullable, required: Section heading
      - `entities` UpskillingPlanEntitySchema[], required: Ordered entities in this section
        - `entityType` string, nullable, required: Entity type: task | course
        - `progress` string, nullable: Entity progress: not_started | in_progress | completed. Assigned plans only; rejected on templates.
        - `courseId` string, nullable: EF course id, as returned in courseId by GET /api/v2/core/courses. Required for course, omit for task.
        - `skills` string[]: Skill names the task covers. Each must be one of the plan's skills, matched ignoring case. Omit for course.
        - `description` string, nullable: Task description. Omit for course.
        - `title` string, nullable: Task title. Required for task, omit for course. Identifies the task across updates.
    - `name` string, nullable: Plan title
    - `externalId` string, nullable: Your external record id, unique in the tenant. Addresses the plan in the /ext/<externalId> paths.
    - `userId` string, nullable: Plan creator user id
    - `planDurationDays` integer, nullable: Plan duration in days
    - `publishedAt` integer, nullable: Publish timestamp (epoch seconds)
    - `skills` string[], nullable: Skill names
    - `groupId` string, nullable: Tenant group id
    - `updatedAt` integer, nullable: Updated timestamp (epoch seconds)
    - `description` string, nullable: Plan description
    - `associatedRoleIds` string[], nullable: Role ids, as returned by GET /api/v2/JIE/roles
  - `meta` MetaSchema
    - `totalCount` integer, nullable
    - `pageTotalCount` integer, nullable
    - `pageStartIndex` integer, nullable

## Changes

- **2026-11-03** `9a8b3a927e93`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/eightfold/apis/api-server-v2-service-service/changes/api/v2/careerhub/upskill-plan-templates/get.md)

---

[API](https://skmtc.dev/eightfold/apis/api-server-v2-service-service.md) - [All operations](https://skmtc.dev/eightfold/apis/api-server-v2-service-service/llms.txt) - [OpenAPI document](https://skmtc.dev/eightfold/apis/api-server-v2-service-service/revisions/9a8b3a927e93?raw)
