www/apps/resources/app/commerce-modules/sales-channel/publishable-api-keys/page.mdx
import { CodeTabs, CodeTab } from "docs-ui"
export const metadata = {
title: Publishable API Keys with Sales Channels,
}
In this document, you’ll learn what publishable API keys are and how to use them with sales channels.
A publishable API key, provided by the API Key Module, is a client key scoped to one or more sales channels.
When sending a request to a Store API route, you must pass a publishable API key in the header of the request:
curl http://localhost:9000/store/products \
x-publishable-api-key: {your_publishable_api_key}
The Medusa application infers the associated sales channels and ensures that only data relevant to the sales channel are used.
To create a publishable API key, either use the Medusa Admin or the Admin API Routes.
If you create an API route under the /store prefix, you can access the sales channels associated with the request's publishable API key using the publishable_key_context property of the request object.
For example:
import { MedusaStoreRequest, MedusaResponse } from "@medusajs/framework/http"
import { getVariantAvailability } from "@medusajs/framework/utils"
export async function GET(
req: MedusaStoreRequest,
res: MedusaResponse
) {
const query = req.scope.resolve("query")
const sales_channel_ids = req.publishable_key_context.sales_channel_ids
res.json({
sales_channel_id: sales_channel_ids[0],
})
}
In this example, you retrieve the scope's sales channel IDs using req.publishable_key_context.sales_channel_ids, whose value is an array of IDs.
You can then use these IDs based on your business logic. For example, you can retrieve the sales channels' details using Query.
<Note title="Tip">Notice that the request object's type is MedusaStoreRequest instead of MedusaRequest to ensure the availability of the publishable_key_context property.