The Storefront API lets you manage your customers' domain portfolio programmatically without needing to log in to Storefront Manager. This is useful if you have your own platform or control panel and want to automate renewals, run bulk operations across a portfolio, or keep domain data in sync with your own systems.
Shopco nameservers required for DNS managementDNS template and DNS record management only work for domains using Storefront's default Shopco nameservers (
a.ns.shopco.com,b.ns.shopco.com,c.ns.shopco.com). Domains using custom nameservers manage their own DNS outside of Storefront — see Nameservers below.
Domain object reference
A domain object returned by the API includes:
| Field | Description |
|---|---|
name | The domain name |
registration_date | Registration date (null for some states) |
expiry_date | Current expiry date |
status | One of active, renewing, expiring, expired, redemption, suspended, verifying |
has_whois_privacy | WHOIS privacy state. null if the TLD doesn't support it |
is_lock_enable | Registrar lock state. null if the TLD doesn't support it |
is_auto_renew | Auto-renew state. null if the TLD doesn't support it |
managed_dns | Whether DNS is served by Storefront (manageable via the DNS endpoints) |
domain_auth_info | Transfer auth code, where the TLD uses one |
tld_supports_* flags | Which settings this domain's TLD actually allows — check before calling an endpoint that would otherwise be rejected |
tld_data | TLD-specific registrant data where applicable (e.g. .se/.be registration numbers) |
customer | The owning customer (id, email, username, name, status) |
Settings a TLD doesn't support come back as null rather than false. Requesting a domain outside your account returns 403 (belongs to another reseller) or 404 (not in your storefront). Domains mid-transfer-in aren't visible until the transfer completes.
WHOIS contacts
Retrieve or update the registrant, admin, tech, and billing contacts for a domain. registrant is always present; the other three are omitted (not null) when the registry doesn't hold a separate contact for that role. Registrant records for some TLDs carry extra required fields (for example a Swedish organization number for .se) — only the fields that apply to this domain's TLD are returned.
Updating the registrant is validated at the registry level; a rejection returns an error with the reason. Some TLDs treat a registrant change as a trade requiring approval, so the change may not be visible immediately.
Nameservers and DNS template
Two related but distinct capabilities:
- DNS template assignment records which of your DNS zone templates a domain should follow. It doesn't rewrite the zone by itself — applying it requires a separate reset call. Assigning an invalid template returns an error, and
nullremoves the association. - Nameservers are the domain's actual delegation, read live from the registry. Updating them replaces the full set (minimum two, no duplicates) at the registry level. Moving a domain off Shopco nameservers stops Storefront from serving its DNS — the records are kept, so pointing nameservers back restores them. If the domain is locked and its TLD allows locking, Storefront unlocks it for the update and re-locks it afterward automatically.
These are domain-level settings, distinct from the DNS record management covered in DNS overview, which operates within a domain's zone once it's on Shopco nameservers.
Reassigning a domain between customers
Sometimes called "push transfer" in the spec, but it's not a transfer to another reseller: it reassigns a domain from one customer to another customer within your own storefront. Both customers must already belong to you, and a domain with a transfer already in progress isn't eligible for another.
This is asynchronous — the request queues the move and responds immediately; check the outcome with a separate status call. Status is one of pending, completed, or failed. Requesting status for a domain with no transfer ever initiated returns an error rather than an empty result.
Domain settings
Auto-renew, registrar lock, and WHOIS privacy update together through a single sparse request — only the fields you include change, and not every TLD supports every setting (check the domain object's tld_supports_* flags first). A dedicated bulk endpoint updates the same three settings across up to 100 domains in one call, processing each domain independently so one failure doesn't block the rest.
Domain import
Pulls domains you already hold at OpenSRS into this storefront so they show up in your portfolio and can be managed through the API. This is asynchronous and returns a batch ID immediately. Duplicates are collapsed, and importing a domain already in the storefront is a no-op rather than an error. If your reseller account hasn't completed required onboarding, the request is rejected. See Importing OpenSRS domains for the equivalent UI-based flow.
Domain portfolio and filtering
Retrieve your full domain portfolio as a filterable, sortable list using a ?column=operator.value syntax (eq, gt, lt, in, and similar), for example filtering domains expiring before a date, belonging to a given customer, or matching a status.
Pagination uses offset and limit (default 25, capped at 100) with a Content-Range response header carrying the total count — there's no page-cursor token.
Column names differ between endpoints. The filterable list columns don't all match the single-domain object's field names:
lock_enabledon the list isis_lock_enableon the domain object,whois_privacyishas_whois_privacy, andautorenewisis_auto_renew.