App Installer Details API for the Sparkforge Marketplace
The Sparkforge App Installer Details API returns the user who installed your Marketplace app, the sub-account and agency context, and white-label branding fields — without requiring broad company-level OAuth scopes.
The App Installer Details API gives Marketplace developers verified installer identity, install context (sub-account and agency), and white-label branding so you can personalize onboarding, theme your UI, and reach the agency owner — all on minimal OAuth scopes.
Why this endpoint exists
- Identity and context: who installed and where the app lives
- White-label awareness: agency branding fields for in-app theming
- Scope reduction: avoids broad company-level OAuth scopes for branding data
- Personalized onboarding: agency-specific welcome flows, content, and pricing
- Owner outreach: contact details to build agency relationships
- Privacy by design: respects white-label boundaries between agencies and sub-accounts
Authentication
Supported tokens: Agency Token or Sub-account Token.
- An Agency Token resolves installer + agency context, and can indicate the sub-account where the install occurred.
- A Sub-account Token resolves installer + the current sub-account's agency context.
Headers:
Authorization: Bearer {YOUR_TOKEN}
Content-Type: application/jsonUse the least-privileged token for the runtime context. A sub-account workflow should use a Sub-account Token rather than an Agency Token.
Endpoint
HTTP method: GET
Path: /marketplace/app-installer/details (placeholder — confirm in the official API reference).
cURL example:
curl -X GET \
"{BASE_URL}/marketplace/app-installer/details" \
-H "Authorization: Bearer {AGENCY_OR_SUB_ACCOUNT_TOKEN}" \
-H "Content-Type: application/json"Response fields
installer.userId(string) — unique ID of the installerinstaller.name(string) — human-readable nameinstaller.email(string) — contact for collaboration and account linkinginstallationContext.subAccountId(string|null) — sub-account where installedinstallationContext.agencyId(string) — parent agency IDagency.companyName,agency.companyEmail,agency.ownerNamewhiteLabel.brandName,whiteLabel.supportEmail,whiteLabel.supportUrl,whiteLabel.primaryDomain,whiteLabel.logoUrl,whiteLabel.faviconUrl
White-label data guidance
- Use
brandName,logoUrl, andprimaryDomainto theme your app UI for agency users. - Don't leak agency identity to sub-account end clients unless explicitly intended.
- Server-side cache branding fields with a short TTL (15-60 minutes) to reduce calls and pick up updates.
- Invalidate the cache when a new
logoUrlorbrandNameis detected.
Rate limiting and caching
- Cache installer + white-label result per token/context. Refresh on login or session start.
- Use exponential backoff with jitter on 429/5xx responses.
- Don't call this endpoint on every page — once per session or context change is plenty.
Error handling
| HTTP | Cause | Recommended action |
|---|---|---|
| 401 | Missing/invalid token | Refresh token; confirm header format |
| 403 | Token lacks privileges | Use the appropriate Agency or Sub-account token |
| 404 | App not installed for context | Prompt install or switch to a valid account |
| 429 | Rate limit exceeded | Apply backoff and caching |
| 5xx | Temporary service issue | Retry with exponential backoff |
Setup steps
- Generate Agency and Sub-account tokens for testing. Store them in a vault or secrets manager.
- Implement a GET to
{BASE_URL}/marketplace/app-installer/detailswith the appropriate Bearer token. - Persist
installationContextand agency IDs. CachewhiteLabelfields. Hydrate UI theme fromwhiteLabeland welcome copy frominstaller.name. - Add 401/403/404/429 handlers and exponential backoff. Don't expose raw JSON to end clients.
- Confirm agency branding isn't leaking to unintended sub-account audiences.
- Add observability: success rate, latency, cache hit ratio.
FAQ
Which token should I use?
Match the token to your runtime context. Agency tokens resolve agency + installer (and can reference sub-account installs). Sub-account tokens resolve the current location's agency context.
Does this require company-level OAuth scopes?
No. Avoiding broad company-level scopes is a primary reason the endpoint exists.
Can I cache the response?
Yes. Cache per token/context and refresh on session start or branding change.
Frequently Asked Questions
Which token should I use to call the App Installer Details API?
Does this endpoint require company-level OAuth scopes?
Can I cache the API response?
What happens if the installer leaves the agency?
How should I handle 429 rate limit responses?
Was this article helpful?
Thanks for the feedback.