Skip to main content

Overview

The Storehouses API lets estate management firms access client portfolio data programmatically. From the portal, you can generate API keys, manage scoped access grants, and integrate Storehouses data into your existing systems.
API management is available to firms with an active Enterprise plan. Navigate to API & Integrations → Storehouses API in your portal sidebar.

API Key Management

Generating a Key

1

Go to Storehouses API

Navigate to API & Integrations → Storehouses API in your portal sidebar.
2

Click 'Create API Key'

Enter a name for the key (e.g., “Production - Portfolio Sync”).
3

Select Environment

Choose Sandbox for testing or Production for live data.
4

Choose Scopes

Select which data the key can access (see Scopes below).
5

Copy Your Key

Your API key is shown once — copy and store it securely. The key starts with sk_live_ (production) or sk_test_ (sandbox).
API keys are shown only once at creation time. Store them securely — we cannot retrieve a key after it’s created.

Revoking a Key

  1. Find the key in your API keys list
  2. Click Revoke
  3. Confirm revocation — the key stops working immediately
Revoked keys cannot be restored. Create a new key if needed.

Scopes

Scopes control what data an API key can access. Each scope unlocks a progressively deeper level of client data:
Scopes interact with privacy tiers. Even with broad scopes, P0 (private) fields like internal notes and file paths are never exposed through the API.

Partner Grants

A partner grant authorizes your API key to access a specific client’s data. Each grant defines:
  • Which client — The user whose data you can access
  • Which scopes — What data fields are visible
  • Which assets — All items, specific categories, specific items, or a collection
  • Expiration — Optional time limit on access

Grant Types

Clients manage their grants from Account Settings → Access → Connected Apps.

API Endpoints

List Assets

Returns paginated list of client’s items, filtered by grant scopes and asset filter. Query parameters:
  • client_id (required) — Client’s user ID
  • category — Filter by asset category
  • min_value / max_value — Value range filter
  • updated_since — ISO 8601 timestamp for delta sync
  • include — Sideload related data: valuations, documents
  • page / page_size — Pagination (default 25, max 100)

Get Asset

Returns a single asset by its registry ID.

List Valuations

Returns valuation history for an asset. Requires valuation scope. Query parameters:
  • source — Filter by valuation source (spot_price, appraisal, user_estimate, etc.)
  • since — Only valuations after this timestamp
  • page / page_size — Pagination

List Documents

Returns document metadata for an asset. Requires documentation scope. File contents are never served — only metadata (type, title, issuer, dates, file size). Response includes a completeness score showing what percentage of recommended documentation is present.

Portfolio Summary

Returns aggregated portfolio view with total value (if valuation scope granted), category breakdown, and documentation completeness (if documentation scope granted).

Authentication

All API requests use Bearer token authentication:

Required Headers

Rate Limits

Rate limit headers are included in every response:
  • X-RateLimit-Limit — Your tier’s limit
  • X-RateLimit-Remaining — Requests remaining in window
  • X-RateLimit-Reset — When the window resets

Delta Sync

Use the updated_since parameter to efficiently sync only changed data:
This returns only items modified after the specified timestamp, enabling incremental sync without re-fetching the entire portfolio.

Error Handling

All errors follow a consistent format:

Registry IDs

Every item in Storehouses has a globally unique Registry ID in the format:
For example: SH-PM-01JD5K8X2MFGHJ4N7PQRST0VWX
  • SH — Storehouses platform prefix
  • PM — Category code (PM = Precious Metals, WT = Watches, etc.)
  • ULID — 26-character unique, time-sortable identifier
Registry IDs are stable, never change, and are safe to use as external references in your systems.

Best Practices

Request only the scopes you need. This follows the principle of least privilege and makes it easier for clients to approve your access.
Use updated_since to fetch only changed data instead of re-pulling the entire portfolio on every sync cycle.
Check X-RateLimit-Remaining headers and back off when approaching limits. Implement exponential backoff on 429 responses.
Use Registry IDs as stable keys in your systems. They never change, even if the item’s title or category is updated.
Create sandbox API keys for testing. Switch to production keys only when your integration is ready.