> ## Documentation Index
> Fetch the complete documentation index at: https://docs.closient.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Render an SSCC's barcode

> Render the barcode for one stored SSCC. Encodes the Serial Shipping Container Code (AI 00) alone, as the GS1 Logistic Label carries it. Nothing is encoded that the record does not hold; a SSCC that does not exist, or that the caller's organization does not own, is a 404.

Symbologies: qr, datamatrix, gs1_128 (default gs1_128). A symbology, format or option the route cannot use is a 422 naming the ones it can; x-closient-symbology-formats lists each symbology's formats.

Caching: Cache-Control: private, no-cache with a strong ETag over the bytes, so an edit to an encoded field changes the ETag and If-None-Match revalidates. PDF output embeds a creation time, so its ETag changes on every render.



## OpenAPI

````yaml /openapi/openapi-products.json get /products/api/v1/logistic-units/{sscc}/barcode
openapi: 3.1.0
info:
  title: Products API
  version: 1.0.0
  description: >
    Look up, claim, and browse GTINs in the Closient product repository.


    ## Authentication


    All endpoints require an API key passed via the `X-API-Key` HTTP header,
    unless otherwise noted.


    ```

    X-API-Key: csb_<body>_<checksum>

    ```


    Generate API keys in **Settings > API Keys** in your dashboard, or via the
    Account API.

    Session-based (cookie) authentication is also accepted for browser-based
    access.


    ## Rate Limits


    | Tier        | Requests / minute | Requests / day |

    |-------------|-------------------|----------------|

    | Default     | 300               | 10,000         |

    | Custom      | Contact us        | Contact us     |


    Rate-limit headers are included on every response so callers can
    self-throttle without

    hitting our 429s ("informed governor"):


    - `RateLimit-Policy` — every active window, e.g. `300;w=60, 10000;w=86400`

    - `RateLimit-Limit` — quota for the **most-restrictive** currently-active
    window

    - `RateLimit-Remaining` — requests left in that window

    - `RateLimit-Reset` — seconds until that window resets (relative; clock-skew
    safe)


    Legacy `X-RateLimit-*` aliases are also emitted for back-compat.
    `X-RateLimit-Reset`

    keeps the absolute Unix-timestamp shape to avoid breaking existing
    consumers.


    When rate-limited, you receive `429 Too Many Requests` with a
    `retry_after_seconds` field

    in the error envelope and a `Retry-After` header.


    ## Pagination


    List endpoints return paginated results in this envelope:


    ```json

    {
      "data": [...],
      "pagination": {
        "page": 1,
        "page_size": 25,
        "total_count": 342,
        "total_pages": 14,
        "has_next": true,
        "has_previous": false
      }
    }

    ```


    Use `?page=2&page_size=50` query parameters. Maximum page size is 100.


    ## Error Responses


    All errors conform to [RFC 9457 Problem
    Details](https://www.rfc-editor.org/rfc/rfc9457)

    with `Content-Type: application/problem+json`:


    ```json

    {
      "type": "https://closient.com/docs/errors/not_found",
      "title": "Not Found",
      "status": 404,
      "detail": "The requested resource was not found.",
      "error_code": "not_found",
      "retryable": false,
      "timestamp": "2026-03-31T12:00:00+00:00"
    }

    ```


    Common error codes: `unauthorized` (401), `forbidden` (403), `not_found`
    (404),

    `validation_error` (422), `rate_limited` (429), `internal_error` (500).
  termsOfService: https://www.closient.com/terms/
servers:
  - url: https://www.closient.com
security: []
tags:
  - name: Products
    description: Look up, claim, and browse products.
  - name: Product Group
    description: Manage GDSN packaging hierarchy relationships.
  - name: Import
    description: >-
      Bulk import products, batch/lots (GS1 AI 10) and serial numbers (GS1 AI
      21) from CSV, TSV or XLSX files, with a downloadable template per entity.
  - name: Digital Link
    description: >-
      Parse GS1 Digital Link URIs into structured AIs (GTIN, lot, expiry,
      serial).
  - name: Labels
    description: >-
      Bulk label-export jobs: ZIPs of QR / DataMatrix / 1D symbols and multi-up
      sheet PDFs, asynchronous, with status polling.
  - name: Lots
    description: >-
      Lot generator v2: format templates with persistent counters,
      reserve/commit/discard runs, soft/hard collision handling, and an
      asynchronous path with SSE progress; and the barcode for one stored lot.
  - name: Serials
    description: >-
      The barcode for one stored serial (GS1 AI 21), with its lot when it is
      linked to one.
  - name: Returnable assets
    description: >-
      The barcode for one stored GRAI (GS1 AI 8003), the identifier of a pallet,
      crate, keg or other returnable asset.
  - name: Product models
    description: >-
      The barcode for the GMN (GS1 AI 8013) a stored product carries, the
      identifier of a product model.
  - name: Individual assets
    description: >-
      The barcode for one stored GIAI (GS1 AI 8004), the identifier of a
      forklift, laptop, tool or other individually tracked fixed asset.
  - name: Logistic units
    description: >-
      The barcode for one stored SSCC (GS1 AI 00), the identifier of a pallet or
      other logistic unit.
  - name: Lots and serials
    description: >-
      The lots (GS1 AI 10) and serials (GS1 AI 21) registered on one of the
      organization's products: list, read, create, update and delete each, or
      register a value seen in scan history.
  - name: Retailer Catalog Import
    description: >-
      Server-side retailer catalog import jobs: stage normalised rows, then run
      the GTIN-keyed cross-retailer merge with a dry-run mode, per-field
      provenance and a quarantine report for every row refused.
  - name: HRI Presets
    description: >-
      Saved, named per-organisation Human Readable Interpretation (HRI)
      configurations — placement, layout, notation and typography. Referenceable
      by name from the QR generation endpoint, with an org default applied when
      no options or preset are supplied.
  - name: PIP Embed (Public)
    description: >-
      Unauthenticated, cross-origin read powering the embeddable PIP panel
      (`/widget/v1/pip-panel.js`) that retailers drop into their own product
      detail pages. Reduced to the disclosure level the hosted page would serve
      an anonymous visitor.
  - name: Recipes
    description: >-
      Recipes shown on a product's hosted page. Create a recipe, attach it to
      the organization's products by GTIN, and update or delete it.
  - name: Firmware
    description: >-
      Firmware releases shown on a product's hosted page. Publish a release for
      the organization's products by GTIN, mark it latest or stable, and update
      or delete it.
  - name: App Links
    description: >-
      Companion-app download and launch links shown on a product's hosted page,
      one per platform. Create, list, update and delete the links on the
      organization's products.
  - name: Replacement Parts
    description: >-
      Replacement parts shown on a product's hosted page. List one of the
      organization's products as a part of another, repoint it, or remove it.
  - name: Accessories
    description: >-
      Accessories shown on a product's hosted page. List one of the
      organization's products as an accessory of another, repoint it, or remove
      it.
  - name: Consumables
    description: >-
      Consumables shown on a product's hosted page (filters, refills,
      cartridges). List one of the organization's products as a consumable of
      another, with its lifespan and whether it is required, repoint it, or
      remove it.
  - name: Product Families
    description: >-
      Consumer variant groups: one organization's products that are the same
      concept in different sizes, shades, flavors or scents. Create a family,
      then add, update, reorder and remove its member products. Distinct from
      Product Group, which is packaging hierarchy.
  - name: Product Links
    description: >-
      Generic, GS1-link-type-keyed brand CTA links (e.g. reviews, promotions,
      loyalty programs, homepage) attached to a product or a brand and rendered
      on the hosted page.
externalDocs:
  description: Closient Documentation
  url: https://docs.closient.com
paths:
  /products/api/v1/logistic-units/{sscc}/barcode:
    get:
      tags:
        - Logistic units
      summary: Render an SSCC's barcode
      description: >-
        Render the barcode for one stored SSCC. Encodes the Serial Shipping
        Container Code (AI 00) alone, as the GS1 Logistic Label carries it.
        Nothing is encoded that the record does not hold; a SSCC that does not
        exist, or that the caller's organization does not own, is a 404.


        Symbologies: qr, datamatrix, gs1_128 (default gs1_128). A symbology,
        format or option the route cannot use is a 422 naming the ones it can;
        x-closient-symbology-formats lists each symbology's formats.


        Caching: Cache-Control: private, no-cache with a strong ETag over the
        bytes, so an edit to an encoded field changes the ETag and If-None-Match
        revalidates. PDF output embeds a creation time, so its ETag changes on
        every render.
      operationId: barcode_logistic_unit
      parameters:
        - in: query
          name: format
          schema:
            allOf:
              - description: Every image format a record barcode can be written as.
                enum:
                  - svg
                  - png
                  - pdf
                  - eps
                  - tif
                examples:
                  - svg
                title: ImageFormat
                type: string
            default: svg
            description: >-
              Image format. Which formats a symbology writes is published as
              x-closient-symbology-formats; qr also writes tif, datamatrix
              writes svg, png and pdf, the linear symbologies svg, png, pdf and
              eps.
          required: false
          description: >-
            Image format. Which formats a symbology writes is published as
            x-closient-symbology-formats; qr also writes tif, datamatrix writes
            svg, png and pdf, the linear symbologies svg, png, pdf and eps.
        - in: query
          name: size
          schema:
            description: >-
              QR only: side length in pixels, or SVG/PDF/EPS user units, when
              xdim_mm is not set. Default 400.
            title: Size
            maximum: 2000
            minimum: 50
            type: integer
          required: false
          description: >-
            QR only: side length in pixels, or SVG/PDF/EPS user units, when
            xdim_mm is not set. Default 400.
        - in: query
          name: xdim_mm
          schema:
            description: >-
              X-dimension (narrowest module) in millimetres. QR: sizes the
              symbol physically. Linear symbologies: the bar module width,
              default 0.33. DataMatrix: only with composed HRI. Composed HRI on
              qr or datamatrix requires it.
            title: Xdim Mm
            maximum: 10
            minimum: 0.1
            type: number
          required: false
          description: >-
            X-dimension (narrowest module) in millimetres. QR: sizes the symbol
            physically. Linear symbologies: the bar module width, default 0.33.
            DataMatrix: only with composed HRI. Composed HRI on qr or datamatrix
            requires it.
        - in: query
          name: dpi
          schema:
            description: >-
              PNG resolution, 300 or 600. QR: only with xdim_mm. DataMatrix:
              always. Linear symbologies: only with composed HRI. Default 300.
            title: Dpi
            maximum: 600
            minimum: 300
            multipleOf: 300
            type: integer
          required: false
          description: >-
            PNG resolution, 300 or 600. QR: only with xdim_mm. DataMatrix:
            always. Linear symbologies: only with composed HRI. Default 300.
        - in: query
          name: bar_height_mm
          schema:
            description: >-
              Linear symbologies only: bar height in millimetres, for the bare
              symbol. Default 25.
            title: Bar Height Mm
            maximum: 100
            minimum: 1
            type: number
          required: false
          description: >-
            Linear symbologies only: bar height in millimetres, for the bare
            symbol. Default 25.
        - in: query
          name: cmyk
          schema:
            description: >-
              QR with format=eps only: CMYK process colours instead of RGB, for
              the bare symbol.
            title: Cmyk
            type: boolean
          required: false
          description: >-
            QR with format=eps only: CMYK process colours instead of RGB, for
            the bare symbol.
        - in: query
          name: hri_preset
          schema:
            description: >-
              Name of a saved HRI preset to compose human-readable text around
              the symbol (qr, datamatrix, gs1_128, gs1_databar_expanded).
              Without it the organization's default preset applies when the
              request can take it: xdim_mm set (or a linear symbology), a format
              other than tif, and none of size, cmyk or bar_height_mm.
            title: Hri Preset
            maxLength: 128
            pattern: ^[^\x00]{0,}$
            type: string
          required: false
          description: >-
            Name of a saved HRI preset to compose human-readable text around the
            symbol (qr, datamatrix, gs1_128, gs1_databar_expanded). Without it
            the organization's default preset applies when the request can take
            it: xdim_mm set (or a linear symbology), a format other than tif,
            and none of size, cmyk or bar_height_mm.
        - in: query
          name: symbology
          schema:
            allOf:
              - description: >-
                  Symbologies for an SSCC (AI 00): the logistic label's GS1-128,
                  or a 2D carrier.
                enum:
                  - qr
                  - datamatrix
                  - gs1_128
                examples:
                  - qr
                title: LogisticUnitBarcodeSymbology
                type: string
            default: gs1_128
            description: Symbology.
          required: false
          description: Symbology.
        - in: path
          name: sscc
          schema:
            description: The 18-digit SSCC (GS1 AI 00).
            pattern: ^\d{18}$
            title: Sscc
            type: string
          required: true
          description: The 18-digit SSCC (GS1 AI 00).
      responses:
        '200':
          description: OK
          content:
            image/svg+xml:
              schema:
                type: string
                format: binary
            image/png:
              schema:
                type: string
                format: binary
            application/pdf:
              schema:
                type: string
                format: binary
            application/postscript:
              schema:
                type: string
                format: binary
            image/tiff:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '405':
          description: Method Not Allowed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: Unprocessable Content
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '429':
          description: Too Many Requests
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
      security:
        - APIKeyHeaderAuth: []
        - OAuthTokenAuth: []
        - CookieGatedSessionAuth: []
components:
  schemas:
    ErrorOut:
      description: |-
        RFC 9457 Problem Details response.

        All API errors are returned in this format with Content-Type:
        application/problem+json.
      examples:
        - detail: The requested resource was not found.
          error_code: not_found
          retryable: false
          status: 404
          timestamp: '2026-03-31T12:00:00+00:00'
          title: Not Found
          type: https://closient.com/docs/errors/not_found
        - detail: Validation error.
          details:
            - loc:
                - body
                - name
              msg: Field required
              type: missing
          error_code: validation_error
          retryable: false
          status: 422
          timestamp: '2026-03-31T12:00:00+00:00'
          title: Validation Error
          type: https://closient.com/docs/errors/validation_error
        - detail: Rate limit exceeded. Please try again later.
          error_code: rate_limited
          retry_after: 31
          retryable: true
          status: 429
          timestamp: '2026-03-31T12:00:00+00:00'
          title: Rate Limited
          type: https://closient.com/docs/errors/rate_limited
      properties:
        type:
          description: URI reference identifying the error type.
          title: Type
          type: string
        title:
          description: Short human-readable summary of the error.
          title: Title
          type: string
        status:
          description: HTTP status code.
          title: Status
          type: integer
        detail:
          description: Human-readable explanation of this specific occurrence.
          title: Detail
          type: string
        error_code:
          description: Machine-readable error code (e.g. not_found, unauthorized).
          title: Error Code
          type: string
        retryable:
          default: false
          description: Whether retrying the same request can succeed.
          title: Retryable
          type: boolean
        timestamp:
          description: ISO 8601 timestamp of when the error occurred.
          title: Timestamp
          type: string
        retry_after:
          anyOf:
            - type: integer
            - type: 'null'
          description: Seconds to wait before retrying (when applicable).
          title: Retry After
        owner_action_required:
          anyOf:
            - type: boolean
            - type: 'null'
          description: Whether the error requires account owner intervention.
          title: Owner Action Required
        details:
          description: Additional context (validation errors, etc.).
          title: Details
      required:
        - type
        - title
        - status
        - detail
        - error_code
        - timestamp
      title: ErrorOut
      type: object
  securitySchemes:
    APIKeyHeaderAuth:
      type: apiKey
      in: header
      name: X-API-Key
    OAuthTokenAuth:
      type: http
      scheme: bearer
    CookieGatedSessionAuth:
      type: apiKey
      in: cookie
      name: sessionid

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.