Credits the business has and what each make costs
- Credentials
- OAuth access token
- Scopes
store:read
Costs are by feature, e.g. studio.adset, library.scene, brand.logo.
Access: OAuth scope store:read; not write-gated.
merchantOAuth store:readAuthorizationBearer <token>OAuth 2.1 (authorization code + PKCE S256, public clients, dynamic registration) for connected AI apps. Effective power is scopes granted AND the person's role today AND the plan. orders:refund, billing:write and team:write are opt-in on the consent screen. Write implies read for marketing:read and messages:read, so a grant holding marketing:write passes a marketing:read check, and messages:send passes messages:read.
Scope: store:read
storeId*stringA store the person can reach. Any other id answers 404, never 403.
OK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/studio/costs' \ -H 'Authorization: Bearer <access_token>'{ "data": { "credits": 50, "costs": { "product.describe": 1, "product.seo": 1, "product.tags": 1, "product.pricing": 1, "product.inventory": 1, "product.organisation": 1, "product.create": 3, "service.create": 3, "brand.palette": 1, "brand.tagline": 1, "brand.logo": 6, "storefront.design": 4, "pages.build": 4, "studio.mockup": 6, "studio.image": 6, "studio.removeBg": 6, "library.cutout": 6, "library.enhance": 6, "library.expand": 6, "library.edit": 6, "library.scene": 6, "library.video": 80, "library.music": 4, "library.promo": 60, "library.voiceover": 1, "studio.adset": 2, "studio.listing": 3, "studio.translate": 1, "studio.week": 3, "marketing.caption": 1, "whatsapp.reply": 1, "analytics.brief": 3, "assistant.create": 3, "assistant.edit": 1 }, "promo": { "15": 60, "20": 80, "30": 100 } }}Email an audience in the shop name POST
Only customers who said yes to marketing get it (checked again now), each with their own unsubscribe link. Costs 1 credit per 10 recipients, taken before sending. Spends credits, so owner or admin. Comes with Growth. Plan: Marketing Plus (included with Growth and Scale), else 403 `plan_limit`. Not enough credits is 403 `insufficient_credits`. A connected AI app that would go past its monthly credit limit (see Connection credit limit) is 403 `over_credit_limit`; the limit and the credits are taken in one transaction, before anything is sent, and a refused send spends nothing. Access: OAuth scope `messages:send`; write-gated by the subscription.
The Library, newest first GET
With where each is in use. AI edits are new versions (`versionOf`). Access: OAuth scope `store:read`; not write-gated. Paged: `{ items, nextCursor }`, `limit` (default 30, at most 100) and an opaque `cursor`. It pages through the newest 500.