Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.tryhoard.com/llms.txt

Use this file to discover all available pages before exploring further.

The Hoard API powers Hoard Desktop and Hoard Agent and is available for custom integrations. All endpoints use Bearer token authentication with your API key. Full spec available at openapi.yaml

Base URL

https://www.tryhoard.com/api/v1

Authentication

Every request must include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Get your API key from Settings > Account (any paid plan).

Endpoints

MethodPathPurpose
POST/heartbeatAgent keep-alive signal
GET/sync/pendingCheck if a sync should run
POST/syncUpload inventory CSV (gzipped)
POST/sync/cancelRelease sync lock on failure
GET/export/price-updatesDownload repricing CSV
GET/statusCurrent sync status
POST/ordersUpload order data
POST/order_feedbacksUpload seller feedback ratings
POST/sales_reportUpload sales report
GET/sales_report/gapsGet months missing data
POST/repricing_eventsRecord a price import event
POST/sync/logUpload sync cycle step log
POST/sync/debugUpload debug screenshot on failure
POST/tasks/claimClaim queued agent work such as order refreshes and backfills
PATCH/tasks/:idComplete or fail a claimed agent task
POST/workflow/healRequest a workflow selector repair
POST/workflow/correctionsConfirm a successful selector repair
POST/workflow/corrections/:id/failureReport a cached repair that failed retry
GET/desktop/updateCheck for desktop app update

Product line header

The POST /sync endpoint accepts an X-Product-Line header to specify which product line the inventory belongs to (e.g., magic, pokemon). This tells the server which product line the uploaded CSV is for, so it can process each game’s inventory separately.

Heartbeat response

The POST /heartbeat response includes fields the local Hoard install uses to stay current:
FieldDescription
product_linesArray of product lines enabled for this account (e.g., [{"name": "magic", "category_id": 1}])
update_availableWhether a newer Hoard version is available
force_updateWhether the local install must update before continuing
latest_versionLatest available version string (only when update_available is true)
download_urlURL to download the new Hoard binary (only when update_available is true)
signatureEd25519 signature for verifying the download
sha256SHA-256 checksum for verifying the download

Response format

All endpoints return JSON except GET /export/price-updates, which returns text/csv. Error responses follow this format:
{"error": "description of what went wrong", "code": "machine_readable_code"}
The code field is present on all error responses and is intended for programmatic handling.

Status codes

CodeMeaning
200Success
201Created (resource saved)
202Accepted (queued for async processing)
401Invalid or missing API key (code: "unauthorized")
403Account suspended (code: "account_suspended")
409Conflict (e.g., no sync in progress to cancel)
413Payload too large — global 10 MB cap on all API routes (code: "payload_too_large")
422Validation error
429Rate limit exceeded (code: "rate_limited", check Retry-After header)
500Server error
This API powers Hoard Desktop and Hoard Agent and is also available for custom integrations. Hoard handles all API communication automatically during sync cycles. You can call these endpoints directly to build tooling, scripts, or alternative clients.