# List skill catalog all

`GET https://api.endless.app/skill-listings`

Source: https://endless.app/docs/api/skill-catalog/list-all

List skill catalog all.

## Authentication

- `bearerAuth`: HTTP bearer (JWT)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `page` | query | integer | no |  |
| `page_size` | query | integer | no |  |
| `search` | query | string | no |  |
| `status` | query | "draft" \| "published" \| "retired" | no |  |
| `category` | query | "marketing" \| "content" \| "social" \| "video" \| "image" \| "audio" \| "research" \| "design" | no |  |
| `sort` | query | "rank" \| "title" \| "updated" \| "uses" | no |  |
| `direction` | query | "asc" \| "desc" | no |  |
| `Endless-Api-Version` | header | string | no | Pin the caller to an API major (`1`). Omit to accept the current version. A major this deployment cannot serve is refused with 400 `unsupported_api_version`. |

## Responses

### 200 OK

Content type: `application/json` — object

- `items` (array<object>, required)
  - `id` (string (uuid), required)
  - `slug` (string, required)
  - `status` ("draft" | "published" | "retired", required)
  - `title` (string, required)
  - `summary` (string, required)
  - `categories` (array<"marketing" | "content" | "social" | "video" | "image" | "audio" | "research" | "design">, required)
  - `cover_url` (string | null, required)
  - `examples` (array<string>, required)
  - `author` (string, required)
  - `verified` (boolean, required)
  - `license` (string | null, required)
  - `source_url` (string | null, required)
  - `name` (string, required)
  - `description` (string, required)
  - `version` (integer, required)
  - `rank` (integer, required)
  - `published_at` (string (date-time) | null, required)
  - `created_at` (string (date-time), required)
  - `updated_at` (string (date-time), required)
  - `uses` (integer, required)
  - `updated_by` (object | null, required)
    - `id` (string, required)
    - `first_name` (string | null, required)
    - `last_name` (string | null, required)
    - `email` (string, required)
    - `image_url` (string, required)
- `page` (integer, required)
- `page_size` (integer, required)
- `total` (integer, required)

### Errors

- `400` (Error): The request is malformed, or failed input validation. `message` names the field and the rule it broke; `data.issues` carries them individually.
- `401` (Error): No bearer token, or a token that failed verification.
- `402` (Error): The workspace has no credits left, or the caller is over a spending limit.
- `403` (Error): Authenticated, but the caller's role in this workspace does not carry the permission this operation needs.
- `409` (Error): The request is well-formed, but the resource's current state forbids it — a taken name, a last admin, a limit already reached.
- `429` (Error): The caller has spent its rate-limit window. `Retry-After` says when to come back.
- `500` (Error): The request failed on our side. Safe to retry an idempotent operation with backoff.
