What you get#
Onekey exposes Sephora as 11 endpoints behind one API key: 1 endpoint return one record (data is an object) and 10 endpoints return a list (data is an array). Every answer uses the same envelope (success, data, metadata, error), the cost is reported in metadata.credits_charged, and fields are mapped onto the unified schema so the code you write for Sephora also works for the rest of the e-commerce & marketplaces category.
Endpoints#
| Endpoint | What it does | Parameters | Credits | Status |
|---|---|---|---|---|
availability | In-store availability of a Sephora SKU near a coordinate. | sku*, latitude, longitude, location_coordinate | 2 | beta needs a pack |
brand_products | Products of a Sephora brand. | id*, cursor | 2 | beta needs a pack |
brands | List Sephora brands. | - | 2 | beta needs a pack |
categories | List Sephora root categories. | - | 2 | beta needs a pack |
category | Browse Sephora products in a category. | category_id*, cursor | 2 | beta needs a pack |
category_data | A Sephora category and its children. | id* | 2 | beta needs a pack |
product | A Sephora product by id. | product_id, url | 2 | beta needs a pack |
reviews | Sephora product reviews. | product_id, url, cursor | 2 | beta needs a pack |
search | Search Sephora products by keyword. | query*, cursor | 2 | beta needs a pack |
search_suggestions | Search suggestions for Sephora. | query* | 2 | beta needs a pack |
stores | Sephora stores near a coordinate. | latitude, longitude, location_coordinate | 2 | beta needs a pack |
A * marks a required parameter. Each endpoint name links to its reference page with the full parameter table, caching window and a recorded response.
Make a request#
This calls sephora.product (2 credits, beta). Replace YOUR_API_KEY with your key; sign up, no card. 1,000 free credits cover the open-platform endpoints. Hard-to-reach platforms (X, TikTok, Instagram, Reddit, and others marked on their page) need a verified email and a purchased pack.
curl "https://api.onekey.dev/v1/sephora/product?product_id=123456789" \
-H "x-api-key: YOUR_API_KEY"Fields you get back#
These unified fields come back from Sephora, with the same names as on every other platform. The count is how many of its 11 mapped endpoints return the field; a field the source lacks is null, never missing. 3 platform-specific fields (ext.<name>) come on top, documented on each endpoint page.
| Field | Type | Endpoints |
|---|---|---|
entity.name | string | 10 |
entity.id | string | 9 |
entity.url | URL | 7 |
entity.description | string | 5 |
entity.stats.rating | number | 5 |
entity.stats.ratingCount | integer | 5 |
media.thumbnailUrl | URL | 5 |
listing.brand | string | 4 |
listing.currency | string | 4 |
listing.price | number | 4 |
entity.slug | string | 2 |
place.address | string | 2 |
author.displayName | string | 1 |
content.createdAt | ISO 8601 date | 1 |
content.id | string | 1 |
content.text | string | 1 |
content.title | string | 1 |
engagement.votes | integer | 1 |
entity.type | string | 1 |
listing.available | boolean | 1 |
place.city | string | 1 |
place.lat | number | 1 |
place.lon | number | 1 |
The full schema is in Unified schema.
Pricing#
Every Sephora endpoint costs 2 credits per call. Free when served from cache (0.2 credit for a cached response over 100 KB). Invalid, failed or not-found calls are not charged. See pricing for credit packs.