Documentación para desarrolladores › Referencia de la API

Endpoints de sus apps

Las apps que sigue este espacio de trabajo: posiciones, competidores, reseñas, página de la tienda, cronología de la ficha, apariciones destacadas, top charts y comprobaciones de la ficha.

Autenticación · Créditos · Parámetros comunes · Códigos de error · openapi.json

GET /apps

Lista las apps seguidas en esta cuenta de Storelift (id, nombre, países, palabras clave). Llámela primero: todas las demás herramientas necesitan un appId de aquí.

Scope
apps:read
Créditos
1
Plan
Free
curl "https://storelift.net/v1/apps" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/keywords

Posiciones de las palabras clave de una app en un país de App Store / Google Play. HAY TRES ESTADOS DISTINTOS: measured=false significa que la consulta no se pudo medir, rank=null significa que se midió pero la app no está entre los primeros resultados, y rank=<number> es la posición. Nunca los reduzca a uno solo: contar un día sin medir como cero da una respuesta falsa.

Scope
apps:read
Créditos
1
Plan
Free

También admite: appId (obligatorio) · country · platform

curl "https://storelift.net/v1/apps/sbx-lumen/keywords?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/rivals

Apps que aparecen POR ENCIMA de esta app en la búsqueda. Para cada competidor recibe las palabras clave en las que le supera, la posición del competidor (theirRank) y la suya (ourRank); ourRank null significa que la app no aparece en absoluto para esa palabra clave.

Scope
apps:read
Créditos
1
Plan
Free

También admite: appId (obligatorio) · country · platform

curl "https://storelift.net/v1/apps/sbx-lumen/rivals?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/ai

Menciones de la app en una muestra fechada de respuestas de motores de IA; no reproduce lo que ChatGPT, Claude o Gemini muestran a cada usuario. Requiere Studio o Enterprise y el ámbito ai:read. engines contiene las respuestas de cada motor medido; providers indica los estados measured, failed o not_measured. Un motor no disponible no equivale a una puntuación de cero. Lea la muestra fechada y su número de preguntas; no es una clasificación universal ni una medida de todas las respuestas que reciben los consumidores.

Scope
ai:read
Créditos
1
Plan
Studio

También admite: appId (obligatorio) · country

curl "https://storelift.net/v1/apps/sbx-lumen/ai?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/ai-check

Inicia una muestra de visibilidad en IA para una app en un país, con los motores disponibles para la ejecución. Requiere Studio o Enterprise y el ámbito ai:read; la cuota del panel de Pro no da acceso a esta herramienta MCP. Consume una ejecución de visibilidad en IA del plan o comprada; get_ai_visibility devuelve el resultado. Solo se ejecuta una medición por app a la vez.

Scope
ai:read
Créditos
1
Plan
Studio
ParámetroUbicaciónTipoDescripción
countryquerystringcódigo de país, p. ej. tr, us (vacío = los tres primeros países de la app)

También admite: appId (obligatorio)

Además de sus créditos, esta llamada consume una ejecución de visibilidad en IA, del plan o comprada, así que aquí no hay ningún comando para copiar.

GET /apps/{appId}/history

Historial de posiciones de las palabras clave en un país. Los puntos de la serie son [día, posición]; una posición null significa que ese día la app no estaba entre los primeros resultados, lo que no es lo mismo que una mala posición. Plan Pro.

Scope
apps:read
Créditos
1
Plan
Free

También admite: appId (obligatorio) · country

curl "https://storelift.net/v1/apps/sbx-lumen/history?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/page

Las señales de la ficha de la propia app en un país (sin nombre ni subtítulo): versión, eventos in-app, apariciones editoriales, estantes de apps similares y el conjunto de capturas de pantalla (iOS), además de la página de Google Play (número exacto de instalaciones, histograma de valoraciones, indicadores de anuncios y de compras in-app, insignia de lista). ios.listingExtras recoge los idiomas que admite la app, su reparto de estrellas (de 1★ a 5★), los eventos in-app en curso y próximos, el texto promocional y las compras in-app destacadas; en Free trae el número de idiomas, los 5 primeros idiomas y el reparto de estrellas, y locked indica cuántos hay del resto. timeline enumera los cambios fechados que detectamos en la ficha: la explicación más sencilla de un movimiento de posición. measured=false significa que la página nunca se leyó; no es lo mismo que una página vacía.

Scope
apps:read
Créditos
1
Plan
Free

También admite: appId (obligatorio) · country

curl "https://storelift.net/v1/apps/sbx-lumen/page?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/reviews

Reseñas recientes de un país: list contiene las reseñas de App Store y android, las de Google Play (un periodo más corto), cada una con su texto, su valoración y su fecha. newCount indica cuántas llegaron desde la medición anterior; en un registro antiguo llega como null, así que léalo como desconocido y no como cero. android: null significa que esa página de Play espera su primera medición, y una lista vacía significa que la página no tiene reseñas.

Scope
reviews:read
Créditos
1
Plan
Free

También admite: appId (obligatorio) · country

curl "https://storelift.net/v1/apps/sbx-lumen/reviews?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/charts

Posición en las listas de App Store en un país: posiciones actuales por lista (gratis / de pago / ingresos, general y por categoría) y su historial. Google Play falta a propósito: no tiene una lista de éxitos pública, y una cifra aquí sería inventada.

Scope
apps:read
Créditos
1
Plan
Free

También admite: appId (obligatorio) · country

curl "https://storelift.net/v1/apps/sbx-lumen/charts?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/reviews/search

Busca en las reseñas de una app en una tienda por texto, valoración en estrellas, versión de la app e intervalo de fechas, de la más reciente a la más antigua: hasta 1000 filas del archivo completo de reseñas dentro del periodo de reseñas de su plan. total es el número de coincidencias; truncated indica si coincidieron más filas de las solicitadas.

Scope
reviews:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
qquerystringtexto que buscar en el título o el cuerpo de la reseña
ratingquerystringvaloraciones en estrellas, separadas por comas, p. ej. 1,2
versionquerystringversión de la app con la que se escribió la reseña, p. ej. 2.4.0
fromquerystringprimer día, YYYY-MM-DD
toquerystringúltimo día, YYYY-MM-DD
limitquerynumberfilas, hasta 1000 (100 por defecto)

También admite: appId (obligatorio) · country · platform

curl "https://storelift.net/v1/apps/sbx-lumen/reviews/search?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/reviews/stats

Distribución de valoraciones en estrellas, media y porcentaje de reseñas de 1–2 estrellas de una app en una tienda, además de una curva día a día (número y media por día) y un desglose por versión, para que una caída se pueda asociar con la versión que la causó. Por defecto, los últimos 90 días.

Scope
reviews:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
daysquerynumberúltimos N días, hasta 365 (90 por defecto)
fromquerystringprimer día, YYYY-MM-DD (tiene prioridad sobre days)
toquerystringúltimo día, YYYY-MM-DD

También admite: appId (obligatorio) · country · platform

curl "https://storelift.net/v1/apps/sbx-lumen/reviews/stats?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/reviews/summary

IA de reseñas para una app en una tienda: un resumen de las reseñas recientes y de sus temas — quejas, peticiones, elogios —, cada uno con las reseñas citadas como prueba. El mismo día y el mismo lote de reseñas devuelven el resumen guardado sin consumir cuota; un resumen nuevo consume un crédito de IA de reseñas de la cuota mensual (todos los planes; Free incluye una muestra). Responde state: "too_few" con el recuento mientras haya muy pocas reseñas para resumir.

Scope
reviews:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
storequeryios | androidios por defecto
langqueryen | tr | de | es | fr | pt | ru | ja | ko | zhidioma del resumen (en por defecto)

También admite: appId (obligatorio) · country

Además de sus créditos, esta llamada consume un crédito de la IA de reseñas de la cuota mensual, así que aquí no hay ningún comando para copiar.

GET /apps/{appId}/reviews/reply-draft

Un borrador de respuesta del desarrollador a una reseña, en el idioma de la tienda. La valoración y el texto proceden de la reseña guardada en nuestro lado, así que el borrador responde a lo que la persona escribió realmente; note añade lo que usted quiere que diga la respuesta (una corrección publicada, un ajuste que probar). Solo se devuelve el borrador: reply_review publica la respuesta tras su confirmación. Consume un crédito de IA de reseñas.

Scope
reviews:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
storequeryios | androidios por defecto
reviewIdobligatorioquerystringid de la reseña, de get_reviews o search_reviews
notequerystringlo que debe decir la respuesta, p. ej. corregido en la 2.4.1

También admite: appId (obligatorio) · country

Además de sus créditos, esta llamada consume un crédito de la IA de reseñas, así que aquí no hay ningún comando para copiar.

GET /apps/{appId}/timeline

Cambios fechados en la ficha de una app — nueva versión, capturas de pantalla, eventos in-app, destacados de la página de la tienda y ediciones del campo de palabras clave en App Store Connect —, cada uno con el movimiento de posiciones de las palabras clave a su alrededor: términos que subieron, bajaron, entraron o salieron entre la última medición anterior al cambio y la última dentro de los window días posteriores, además de los cinco movimientos más grandes.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
windowquerynumberdías tras cada cambio en los que leer las posiciones, hasta 30 (7 por defecto)

También admite: appId (obligatorio) · country · platform

curl "https://storelift.net/v1/apps/sbx-lumen/timeline?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/today

El día de una app en una sola respuesta — la pantalla Hoy: compras, pruebas y renovaciones de las fuentes conectadas, reseñas nuevas, movimientos de posición y de categoría respecto a ayer, nuevas apps por encima de la suya, nuevos eventos in-app y las cifras de ayer de App Store, Google Play, ingresos netos y anuncios, cada una marcada con la fuente de la que procede. tz hace que «hoy» sea el día del propio usuario.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
tzquerystringzona horaria IANA, p. ej. Europe/Istanbul (UTC por defecto)
dayquerystringotro día que leer, YYYY-MM-DD

También admite: appId (obligatorio)

curl "https://storelift.net/v1/apps/sbx-lumen/today" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/competition

Cuántas apps compiten por cada palabra clave en una tienda; se devuelve para los términos vistos en dos o más apps. Por defecto usa las palabras clave seguidas de la app; envíe terms para contar candidatas antes de seguirlas. corpus es el tamaño del conjunto en el que se basa el recuento.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
termsquerystringhasta 100 términos, separados por comas (por defecto, las palabras clave seguidas)

También admite: appId (obligatorio) · country · platform

curl "https://storelift.net/v1/apps/sbx-lumen/competition?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/rivals/{rivalId}

Un competidor de su app en una tienda: su nombre, su valoración y su número de valoraciones con un historial de 90 días (un cambio de nombre es la señal de que se reescribió la ficha), y las palabras clave por las que aparece, con su posición en cada una. La lista de palabras clave consume un uso del espía de palabras clave de la cuota mensual y permanece abierta 30 días; cuando la cuota se agota, la respuesta incluye las cifras propias del competidor con locked: true.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
rivalIdobligatoriopathstringid del competidor, de get_rivals

También admite: appId (obligatorio) · country · platform

Además de sus créditos, esta llamada consume una consulta del espía de palabras clave de la cuota mensual, así que aquí no hay ningún comando para copiar.

GET /apps/{appId}/rivals/{rivalId}/adnetworks

Cómo monetiza un competidor con anuncios: las redes publicitarias con las que trabaja, cada una marcada como DIRECT o RESELLER. El estado distingue los casos: las redes encontradas, un desarrollador que no declara redes publicitarias (no_file), una comprobación que esta vez no pudo completarse (unreachable) o una ficha sin sitio del desarrollador (no_site). Se conserva 14 días.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
rivalIdobligatoriopathstringid del competidor, de get_rivals

También admite: appId (obligatorio) · platform

curl "https://storelift.net/v1/apps/sbx-lumen/rivals/1000000001/adnetworks" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/rivals/{rivalId}/market

El mercado de un competidor en una tienda: en Google Play, el número exacto de instalaciones y el rango de precios de las compras in-app, y las instalaciones entre dos mediciones cuando ya hay dos; en App Store, su precio, su número de valoraciones, su fecha de lanzamiento y si vende compras in-app. Se mide a petición y se conserva 7 días.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
rivalIdobligatoriopathstringid del competidor, de get_rivals

También admite: appId (obligatorio) · country · platform

curl "https://storelift.net/v1/apps/sbx-lumen/rivals/1000000001/market?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/storefront-audit

Su ficha de iOS en todas las tiendas de App Store: dónde se vende la app, qué tiendas muestran el texto o las capturas de pantalla de reserva en lugar de los de su propio idioma, y el segundo idioma regional que cada tienda también indexa. Devuelve el último análisis; refresh: true inicia uno nuevo cuando el último tiene más de 12 horas y responde 202 con eta segundos; vuelva a llamar pasado ese tiempo. La tabla completa está en Pro y superiores; Free recibe la vista previa.

Scope
apps:read
Créditos
1
Plan
Free

También admite: appId (obligatorio)

curl "https://storelift.net/v1/apps/sbx-lumen/storefront-audit" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/suggest

Ideas de palabras clave nuevas para una app en una tienda, escritas en el idioma de búsqueda de esa tienda: términos de 1 a 3 palabras que la gente escribe en el buscador de la tienda, cada uno con un motivo de una línea que indica quién lo busca y por qué la app responde a esa necesidad. Quedan fuera las palabras clave seguidas, las que usted descartó y los nombres de marca. Consume un crédito de redacción con IA de la cuota mensual (Pro y superiores); mida las ideas con get_keyword_metrics antes de seguirlas.

Scope
apps:read
Créditos
1
Plan
Pro
ParámetroUbicaciónTipoDescripción
ccquerystringcódigo de tienda, p. ej. tr, us (por defecto, el primer país de la app)
langqueryen | tr | de | es | fr | pt | ru | ja | ko | zhidioma de los motivos (en por defecto)

También admite: appId (obligatorio)

Además de sus créditos, esta llamada consume un crédito de redacción con IA de la cuota mensual, así que aquí no hay ningún comando para copiar.

POST /apps/{appId}/validate-listing

Revisa un borrador de ficha de App Store antes de enviarlo a App Store Connect. Informa de los límites de caracteres por campo, el espacio del campo de palabras clave perdido en espacios, las repeticiones, las palabras que ya están en el nombre o el subtítulo, la marca y las palabras de relleno, las repeticiones entre nombre y subtítulo, los nombres de productos de Apple y las palabras sobre precios, si el texto está en el idioma y la escritura del código regional, y qué palabras clave seguidas de la app deja fuera el borrador. No escribe nada; envíe solo los campos que quiera revisar.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
localebodystringcódigo regional de la ficha, p. ej. en-US, de-DE, ja
countrybodystringpaís con cuyas palabras clave seguidas se comprueba la cobertura, p. ej. us (por defecto, el primer país de la app)
namebodystringnombre de la app, hasta 30 caracteres
subtitlebodystringsubtítulo, hasta 30 caracteres
keywordsbodystringcampo de palabras clave, separadas por comas, hasta 100 caracteres
promotionalTextbodystringtexto promocional, hasta 170 caracteres
descriptionbodystringdescripción, hasta 4000 caracteres

También admite: appId (obligatorio)

curl -X POST "https://storelift.net/v1/apps/sbx-lumen/validate-listing" \
  -H "Authorization: Bearer $STORELIFT_API_KEY" \
  -H "content-type: application/json" \
  -d '{"locale":"en-US","name":"Lumen: Sleep Sounds","subtitle":"White noise and rain for sleep","keywords":"calm,relax,nap,baby,fan,ocean,lullaby"}'

GET /apps/{appId}/draft

Un borrador de ficha — título, subtítulo, texto promocional y descripción — creado a partir de las palabras clave medidas para esta app en una tienda, ordenadas por demanda. Cada campo incluye su recuento de caracteres frente al límite de la tienda, además de dos comprobaciones de revisión: un nombre de producto de Apple en el título o el subtítulo (solo App Store) y lenguaje sobre precios. termsUsed enumera los términos medidos en los que se basa; excluded, los términos seguidos que aún faltan por medir. No se escribe nada en la tienda: de eso se encarga update_listing. Consume un crédito de redacción con IA (Pro y superiores).

Scope
apps:read
Créditos
1
Plan
Pro
ParámetroUbicaciónTipoDescripción
ccquerystringcódigo de tienda, p. ej. tr, us (por defecto, el primer país de la app)

También admite: appId (obligatorio) · platform

Además de sus créditos, esta llamada consume un crédito de redacción con IA, así que aquí no hay ningún comando para copiar.

GET /apps/{appId}/localize

Redacta la ficha completa de App Store para un nuevo idioma regional — nombre, subtítulo, campo de palabras clave y descripción — a partir de la ficha de origen de la app, midiendo antes cada palabra clave en esa tienda. La primera llamada inicia la redacción y responde pending (consume una redacción de ficha del plan: Free 1 en total, Pro 20 y Studio 75 al mes); vuelva a llamar con poll=true hasta que llegue la ficha. Con shots=true, los textos de las capturas de pantalla llegan también en el mismo idioma. Requiere que get_storefront_audit se haya ejecutado para la app. No escribe nada en App Store Connect: de eso se encarga update_listing.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
localeobligatorioquerystringcódigo regional de destino, p. ej. de_de, pt_br, ja_jp (de-DE también funciona)

También admite: appId (obligatorio)

Además de sus créditos, esta llamada consume una escritura de ficha del plan, así que aquí no hay ningún comando para copiar.

GET /apps/{appId}/shot-text

El texto de las cuatro primeras capturas de pantalla de su app en App Store en una tienda. Apple indexa el texto de la ficha, así que este texto influye en la conversión y no en la posición de búsqueda; la respuesta lo indica con indexed: false. Se conserva hasta que cambien las capturas; una lectura nueva consume un crédito de redacción con IA (Pro y superiores).

Scope
apps:read
Créditos
1
Plan
Pro
ParámetroUbicaciónTipoDescripción
ccquerystringcódigo de tienda, p. ej. tr, us (por defecto, el primer país de la app)

También admite: appId (obligatorio)

Además de sus créditos, esta llamada consume un crédito de redacción con IA, así que aquí no hay ningún comando para copiar.

GET /apps/{appId}/chart-movers

Quién se movió en la lista de la categoría de la app: subidas y bajadas (3 o más puestos), novedades y salidas, con nombres, además del puesto de la propia app y de sus competidores elegidos en ambos días. La categoría procede del registro de listas de la app; envíe genre para consultar otra. Plan Pro.

Scope
apps:read
Créditos
1
Plan
Pro
ParámetroUbicaciónTipoDescripción
kindqueryfree | paid | grossinglista (free por defecto)
genrequerystringid de género de App Store, p. ej. 6013 (por defecto, la categoría de la app)
daysquerynumbercomparar con hace tantos días, 1-90 (1 por defecto)
limitquerynumberfilas por grupo, hasta 100 (25 por defecto)

También admite: appId (obligatorio) · country

curl "https://storelift.net/v1/apps/sbx-lumen/chart-movers?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}/featuring

Dónde muestra Apple la app hoy, por país: tarjetas editoriales (dedicated: true cuando la historia trata de esta app, false cuando forma parte de una colección), eventos in-app activos y programados, el estante You Might Also Like de Apple y el historial fechado de destacados y eventos nuevos. Deje country vacío para consultar todos los países que sigue la app.

Scope
apps:read
Créditos
1
Plan
Free
ParámetroUbicaciónTipoDescripción
countryquerystringcódigo de país, p. ej. tr, us (vacío = todos los países que sigue la app)

También admite: appId (obligatorio)

curl "https://storelift.net/v1/apps/sbx-lumen/featuring?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

GET /apps/{appId}

Una app seguida con sus ids de plataforma, sus países, sus palabras clave seguidas por país y la última medición (tablas de palabras clave por país). Use antes list_apps para obtener el appId.

Scope
apps:read
Créditos
1
Plan
Free

También admite: appId (obligatorio)

curl "https://storelift.net/v1/apps/sbx-lumen" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"

Abrir en el sandbox

Respuesta de ejemplo

GET /apps/{appId}/weekly-plan

Las sugerencias de ficha de esta semana para la app: la misma lista que la tarjeta «Esta semana» del panel, de mejor a peor. Una sugerencia solo aparece si supera comprobaciones estrictas: una palabra clave entra en el título o el subtítulo solo si es un término central y de alta demanda del nicho de la app, la app ya está en los puestos 4–15 para ella, las apps competidoras que están por encima la llevan en su nombre y cabe sin quitar la marca ni nada que ya posicione; las palabras clave de nicho o de cola larga van como mucho al campo de palabras clave, y solo si hay espacio; nunca aparecen otras categorías, otros idiomas ni palabras clave que el usuario rechazó; no se sugiere nada mientras un cambio reciente de la ficha se esté asentando (settling indica hasta cuándo). Cada tarea incluye la frase, el texto actual y el propuesto, las palabras que añade y quita, los motivos (hechos medidos), la contrapartida y un nivel de confianza. Sin country se combinan todas las tiendas y el mismo cambio es una sola tarea con sus países. A menudo está vacía, y es intencionado. Plan Pro.

Scope
apps:read
Créditos
1
Plan
Pro
ParámetroUbicaciónTipoDescripción
countryquerystringuna tienda, p. ej. tr, us (omítalo para combinar todas las tiendas)
goalquerydownloads | rank | revenuese acepta por compatibilidad; las sugerencias se ordenan por valor esperado
platformqueryios | androidtienda de apps (ios por defecto)
limitqueryintegertareas que devolver, 1–10 (5 por defecto)

También admite: appId (obligatorio)

curl "https://storelift.net/v1/apps/sbx-lumen/weekly-plan?country=us" \
  -H "Authorization: Bearer $STORELIFT_API_KEY"