Skip to main content

Store

The "store" is the top-level container of products, orders, customers, etc. Every key is bound to exactly one store. There is no way to query other merchants' stores.

GET /v1/store

Returns the profile of the store the calling key belongs to.

Auth: any active platform key bound to the store. Note: at v1 the store:read scope is not enforced on this endpoint — read endpoints are gated only by a valid key plus store scoping. The scopes actually enforced anywhere in v1 are products:write, orders:write, landing_pages:write, webhooks:read, webhooks:write and usage:read.

Cached for 30 s (per API key + query string) — a dashboard change can take up to 30 s to appear via api.dzbuild.app. Check the X-Cache: HIT|MISS response header. The alias dzbuild.com/api/v1/store is not cached.

Request

curl https://api.dzbuild.app/v1/store \
-H "Authorization: Bearer $DZ_KEY"

Response 200

{
"data": {
"id": 13,
"name": "DZBuild",
"slug": "dzbuild",
"language": "ar",
"description": "DZBuild Offers Preview",
"logo": "/uploads/logos/13/8e19a05f0e4205bbcd861469ec0f9257.webp",
"favicon": null,
"banner": null,
"theme": {
"primary_color": "#f59e0b",
"secondary_color": "#fbbf24",
"background_color": "#ffffff",
"font_family": "Cairo"
},
"subdomain": "dzbuild.minacef.app",
"custom_domain": null,
"custom_domain_verified": false,
"public_url": "https://dzbuild.minacef.app",
"hide_branding": false,
"created_at": "2026-01-13 14:58:23"
},
"meta": { "request_id": "...", "api_version": "v1" }
}

Field reference

FieldTypeNotes
idintStable internal id. Same as store_id everywhere else.
namestringDisplay name. Shown in storefront navbar + emails.
slugstringURL-safe identifier. Used in <slug>.dzbuild.app etc.
languageenumar or fr. Drives storefront RTL/LTR.
descriptionstring|nullShort tagline.
logostring|nullPath on cdn.dzbuild.app if set. Prepend the CDN base if you display it.
faviconstring|nullSame.
bannerstring|nullSame.
theme.primary_colorhex stringThe dominant button + accent color.
theme.secondary_colorhex stringHover / secondary accents.
theme.background_colorhex stringPage background.
theme.font_familystringTypography (default Cairo).
subdomainstring|nullThe DZBuild-issued subdomain. Normally present; null if the store has no subdomain configured yet.
custom_domainstring|nullThe merchant's own domain. Only set if added via dashboard.
custom_domain_verifiedboolTrue only when DNS + SSL provisioning completed.
public_urlstring|nullWhere customers actually land. Prefers a verified custom_domain; falls back to the subdomain; null if neither exists.
hide_brandingbool"Powered by DZBuild" hidden in storefront footer. Unlimited.
created_attimestampStore creation time, in Algiers time (UTC+01:00).

Errors

HTTPCodeCause
401unauthorizedBad or missing key
402quota_exceededStore's monthly request quota exhausted — see Rate limits
403forbiddenPilot mode: key not enrolled ("API is in pilot mode; key not enrolled")
404not_foundThe store was deleted while you were holding the key (very rare)
429rate_limitedPer-minute cap for this key; honour Retry-After — see Rate limits

PATCH /v1/store (coming v1.1)

Update store profile fields (name, slug, theme colors, custom domain).

This endpoint is reserved — the surface is locked but the implementation is part of the v1.1 milestone. Until then, edits go through the dashboard.

Keys already carry a store:write scope, but no write endpoint consumes it yet. PATCH /v1/store returns 405 method_not_allowed today, not 404 — and through api.dzbuild.app you get 400 bad_request first if you omit Idempotency-Key.