Files
Shahed Nasser 009d00f27d docs: redesign table of content (#12647)
* implement toc

* added to projects

* fixes and adapt for references

* added product frontmatter

* remove action menu from 404 pages
2025-05-30 16:55:36 +03:00

69 lines
2.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
products:
- api key
---
import { CodeTabs, CodeTab } from "docs-ui"
export const metadata = {
title: `Publishable API Keys with Sales Channels`,
}
# {metadata.title}
In this document, youll learn what publishable API keys are and how to use them with sales channels.
## Publishable API Keys 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:
```bash
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.
---
## How to Create a Publishable API Key?
To create a publishable API key, either use the [Medusa Admin](!user-guide!/settings/developer/publishable-api-keys) or the [Admin API Routes](!api!/admin#publishable-api-keys).
---
## Access Sales Channels in Custom Store 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:
```ts
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](!docs!/learn/fundamentals/module-links/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.
</Note>