Gilded Art Works API
Build integrations with our REST API. Manage artworks, generate documents, configure webhooks, and automate your art documentation workflow.
Authentication
Authenticated endpoints read the Supabase session cookie set when you sign in, and return 401 Unauthorized when there is none. That is the only authentication path implemented.
Keys with a ga_live_ prefix can be minted from Dashboard Settings and are stored hashed, but no route checks one. An Authorization header is never read — a request carrying one is treated exactly as a request without it. Programmatic access from outside a browser session is not available yet.
# From a signed-in browser session (cookie sent automatically):
fetch('/api/artworks').then(r => r.json())Endpoints
/api/artworksAuthList all artworks in your library
{ artworks: Artwork[] }/api/artworksAuthCreate a new artwork record
| Parameter | Type | Required | Notes |
|---|---|---|---|
title | string | ✓ | |
artist_name | string | ✓ | |
medium | string | — | |
year | number | — | |
dimensions | string | — |
{ artwork: Artwork }/api/documents/pdfAuthGenerate a PDF document (certificate, brochure, customs form)
| Parameter | Type | Required | Notes |
|---|---|---|---|
type | string | ✓ | certificate | brochure | customs | bill-of-sale | condition-report | provenance |
artwork_id | string | ✓ |
PDF binary (application/pdf)/api/searchAuthFull-text search across artworks, documents, and audit logs
| Parameter | Type | Required | Notes |
|---|---|---|---|
q | string | ✓ | Min 2 characters |
scope | string | — | all | artworks | documents | audit |
limit | number | — | Max 50 |
{ artworks: [], documents: [], audit: [], total: number }/api/exportAuthExport data as CSV or JSON
| Parameter | Type | Required | Notes |
|---|---|---|---|
type | string | ✓ | artworks | documents | analytics | audit | webhooks |
format | string | — | csv | json (default: csv) |
File download/api/batchAuthExecute bulk operations (max 50 per batch)
| Parameter | Type | Required | Notes |
|---|---|---|---|
operations | BatchOperation[] | ✓ | { action, resource, id?, data? } |
{ total, success, errors, results: BatchResult[] }/api/verify/[artworkId]Public verification endpoint for artwork authenticity
| Parameter | Type | Required | Notes |
|---|---|---|---|
artworkId | string | ✓ | URL parameter |
{ verified: boolean, artwork: { title, artist, year } }/api/webhooks/manageAuthList your webhook subscriptions
{ subscriptions: WebhookSub[], supported_events: string[] }/api/webhooks/manageAuthCreate a webhook subscription
| Parameter | Type | Required | Notes |
|---|---|---|---|
url | string | ✓ | |
events | string[] | ✓ | |
description | string | — |
{ subscription: WebhookSub, secret: string }/api/webhooks/testAuthSend a test event to a webhook subscription
| Parameter | Type | Required | Notes |
|---|---|---|---|
subscription_id | string | ✓ | |
event | string | ✓ |
{ delivery_id, status, response_code, duration_ms, payload_sent }/api/keysAuthList your API keys (masked)
{ keys: ApiKey[] }/api/keysAuthGenerate a new API key (max 5 per account)
| Parameter | Type | Required | Notes |
|---|---|---|---|
name | string | ✓ | |
scopes | string[] | — |
{ id, name, key, warning }/api/activityAuthUnified activity timeline (documents, artworks, shares, audit)
{ events: ActivityEvent[], total: number }/api/healthPlatform health check (database, auth, payments)
{ status, services: { db, auth, stripe }, latency_ms }Webhook Events
Subscribe to platform events and receive HMAC-SHA256 signed payloads at your endpoint. Verify signatures using the X-Gilded-Signature header.
artwork.createdartwork.updatedartwork.deleteddocument.generateddocument.downloadedverification.checkedorder.createdorder.shippedpayment.receivedteam.member_addedRate Limits
All API endpoints are rate-limited using a sliding-window algorithm. When rate-limited, you'll receive a 429 response withRetry-After and X-RateLimit-Reset headers.
| Endpoint | Limit | Window |
|---|---|---|
| /api/shipping | 10 | 1 minute |
| /api/checkout | 5 | 1 minute |
| /api/documents/pdf | 15 | 1 minute |
| /api/artworks | 20 | 1 minute |
| /api/verify | 30 | 1 minute |
| /api/batch | 10 | 1 minute |