---
title: "Get a SKU"
method: GET
path: "/api/v1/sa/inventory/skus/{id}"
tags: ["SKUs"]
---

# Get a SKU

`GET /api/v1/sa/inventory/skus/{id}`

## Request

- Base URL: `https://app.sellerassistant.app` (the document declares no server; this is the origin it was published from)
- URL: `https://app.sellerassistant.app/api/v1/sa/inventory/skus/{id}`
- Auth: one of:
  - API key in query parameter `api_key`
  - API key in header `X-Api-Key`

Add `include=cost_breakdown` to get how each cost is calculated.

## Path parameters

- `id` integer, required

## Query parameters

- `include` string

## Response `200`

The SKU

- object
  - `data` Sku: What the team sells on one channel: the identity, the costs and the stock.
    - `id` integer: SKUs on the public API v1. There is no create endpoint. A SKU comes from the channel sync, so the API reads, updates the costs, and deletes.
    - `team_id` integer
    - `channel` string
    - `marketplace_id` string, nullable
    - `seller_id` string, nullable
    - `sku` string
    - `asin` string, nullable
    - `fnsku` string, nullable
    - `internal_product_id` string, nullable
    - `purchase_order_item_id` integer, nullable: The purchase order line the costs come from.
    - `status` string
    - `condition` string
    - `fulfillment_channel` 'FBA' | 'FBM', nullable: Who ships the orders of the SKU: Amazon (FBA) or the seller (FBM). `null` means that the channel is not known. The Repricer then uses the FBA formula.
    - `unit_cost` number, nullable
    - `allocated_po_expenses` number, nullable
    - `prep_cost` number, nullable
    - `fba_inbound_cost` number, nullable
    - `landed_cost` number, nullable: Every cost the SKU carries, added up.
    - `cost_overrides` object, nullable: The costs a person set by hand. They win over the ones the purchase order gives.
    - `cost_source` 'po_linked' | 'po_wac' | 'override' | 'none': Where the costs come from.
    - `stock_quantity` integer, nullable
    - `stock_updated_at` string, date-time, nullable
    - `created_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable
    - `sold_in_unconnected_marketplace` boolean: The SKU sells in a marketplace the seller has not connected, so its data stays behind until the seller connects it.
    - `linked_purchase_order` object, nullable: The purchase order the cost comes from. The key is there only when an order item gives the cost.
      - `id` integer, nullable
      - `name` string, nullable
    - `internal_product` object, nullable: The inventory product of the SKU. When the product is gone, the object keeps the title and the image the SKU recorded, with `deleted: true`.
      - `title` string, nullable
      - `image_url` string, nullable
      - `brand` string, nullable
      - `deleted` boolean
    - `listing` Listing: The live state of one SKU on one channel.
      - `id` integer
      - `team_id` integer
      - `sku_id` integer, nullable
      - `channel` 'amazon' | 'walmart' | 'shopify' | 'ebay'
      - `marketplace_id` string, nullable
      - `seller_id` string, nullable
      - `sku` string
      - `identifier` string, nullable
      - `price` number, nullable
      - `currency` string, nullable
      - `condition` string, nullable
      - `fulfillment_type` string, nullable
      - `status` string
      - `error_message` string, nullable
      - `channel_data` object, nullable
      - `listed_at` string, date-time, nullable
      - `batch_id` string, nullable: The batch the draft was made in.
      - `sku_record` object, nullable: The SKU the listing sells, and the product behind it. The list and the read of one listing carry it; a draft the call has just written does not.
        - `id` integer
        - `sku` string, nullable
        - `asin` string, nullable
        - `fnsku` string, nullable
        - `internal_product_id` string, nullable
        - `product_title` string, nullable
        - `product_image_url` string, nullable
        - `internal_product` object, nullable
          - `id` string
          - `title` string, nullable
          - `brand` string, nullable
          - `image_url` string, nullable
      - `created_at` string, date-time, nullable
      - `updated_at` string, date-time, nullable

## Other responses

- `403`: Access denied - insufficient permissions, invalid API key, or the API request limit is used up (`public_api_key_limit`)
- `404`: Resource not found
- `429`: Too many requests - rate limit exceeded

---

[API](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api.md) · [All operations](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api/revisions/5b3ecdbcadb6?raw)
