---
title: "Publish current labels"
method: POST
path: "/v3/label-sets/{labelSetId}/versions"
tags: ["Labeling Curation"]
---

# Publish current labels

`POST /v3/label-sets/{labelSetId}/versions`

Publishes an immutable snapshot of current entity, product, and vault-label
content. Geo policies remain live and are not included. When the canonical
content checksum matches the latest published version, the endpoint returns
that version with `publishOutcome: unchanged` and does not create a release.

## Path parameters

- `labelSetId` string, required

## Request body

- object
  - `versionKey` string
  - `aliases` string[]
  - `sourceRepo` string, nullable
  - `sourceRef` string, nullable
  - `sourceSha` string, nullable
  - `schemaAdapter` string

## Response `200`

Publishable label content is unchanged; the latest version is returned.

- object
  - `data` LabelPublishResult, required
    - `id` string, uuid, required
    - `labelSetId` string, required
    - `versionKey` string, required
    - `status` 'draft' | 'published' | 'archived', required
    - `aliases` string[], required
    - `isLatest` boolean, required
    - `sourceRepo` string, nullable, required
    - `sourceRef` string, nullable, required
    - `sourceSha` string, nullable, required
    - `schemaAdapter` string, required
    - `checksum` string, nullable, required — SHA-256 checksum of canonical entity, product, and vault-label content. Audit timestamps and geo policies are excluded.
    - `createdAt` string, date-time, required
    - `publishedAt` string, date-time, nullable, required
    - `publishOutcome` 'published' | 'unchanged', required — Whether this request created a snapshot or returned the unchanged latest snapshot.
  - `meta` PaginationMeta, required
    - `total` integer — Exact total count when the endpoint provides one.
    - `hasMore` boolean — Indicates whether another page exists beyond the current page.
    - `offset` integer
    - `limit` integer — Echoed page size after endpoint-side clamping.
    - `timestamp` string, date-time, required
    - `chainId` string — Comma-separated chain IDs for multi-chain responses.
    - `degradedProviders` string[] — Live providers whose data is incomplete in this response.

## Other responses

- `201` — Published label snapshot created.
- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `409` — Conflict
- `422` — Validation error
- `500` — Internal server error

---

[API](https://skmtc.dev/euler/apis/euler-data-api-v3.md) · [All operations](https://skmtc.dev/euler/apis/euler-data-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/euler/euler-data-api-v3/revisions/9573a5fbd4a6/schema)
