REST API overview
The Prophouse REST API is the same interface the desktop app, the Unreal plugin and the web library use. Anything you can do in those clients (search, download, push, pull into a project, review, comment) you can script against it.
Base URL
Section titled “Base URL”https://api.prophouse.dev/api/v1Every endpoint path in this reference is relative to that base. For example, GET /entries means GET https://api.prophouse.dev/api/v1/entries.
A first request
Section titled “A first request”Create an API key (see Authentication), then search your library:
curl -H "Authorization: Bearer ph_live_xxxxxxxxxxxx" \ "https://api.prophouse.dev/api/v1/entries?q=weathered%20wooden%20crate&limit=5"{ "entries": [ { "id": 412, "name": "SM_Crate_Old_A", "entry_type": "mesh", "category": "Crates", "has_thumbnail": true, "review_status": "approved", "score": 0.031746 } ], "next_cursor": "eyJzIjogInJlbGV2YW5jZSIsIC..."}(Entry payloads carry more fields than shown here; see Entries and search.)
How requests work
Section titled “How requests work”| Topic | Summary |
|---|---|
| Format | JSON request and response bodies (Content-Type: application/json), except binary uploads and downloads, which are raw bytes. |
| Authentication | Authorization: Bearer <key> on every request. Keys are read or write scoped. |
| Versioning | Every path is under /api/v1. Responses from your library carry X-PH-API: 1. |
| IDs | Integer ids for entries, objects, packs, jobs and so on. Lineages use string ids such as guid:<32 hex> or ph:<32 hex>. |
| Hashes | SHA-256, lowercase hex, over the exact file bytes. |
| Timestamps | UTC ISO 8601 with a Z suffix, for example 2026-07-12T18:04:05Z. |
| Errors | {"error": {"code", "message", "details"}} with a stable code. See Errors and rate limits. |
| Downloads | File bytes are served through short-lived presigned URLs. Fetch them without the Authorization header. |
Details are in Conventions.
Resource map
Section titled “Resource map”| Resource | What it covers | Page |
|---|---|---|
| Entries | Browse, search, search by image, facets, entry detail, dependency closure, thumbnails and previews | Entries and search |
| Curation | Renaming and categorizing entries, tags, collections, packs, projects | Curation |
| Blobs | Downloading file bytes | Downloads |
| Push | Uploading new props and new versions from a script | Push (uploads) |
| Pull jobs | Delivering props into an Unreal project | Pull jobs |
| Locks | Exclusive check-out while you edit a prop | Check-out locks |
| Lineages | Version history and restoring older versions | Versions |
| Reviews | Review state and review requests | Reviews |
| Comments | Comments, replies, reactions, mentions, attachments and annotations | Comments and annotations |
| Notifications | Your inbox, preferences and watches | Notifications and watches |
| Activity | The user-facing activity feed and the catalog change feed | Activity and changes |
| Members | Who is in the workspace | Members |
| Editor sessions | Unreal editor presence and agent-delivered imports | Editor sessions |
| Webhooks | Outbound event delivery (admins) | Webhooks |
| Admin | Denylist and other admin-only operations | Admin endpoints |
Health check
Section titled “Health check”GET https://api.prophouse.dev/api/v1/health needs no key and answers {"ok": true} when the API is reachable.
Machine-readable schema
Section titled “Machine-readable schema”Your library serves an OpenAPI document at GET /openapi.json (that is, https://api.prophouse.dev/api/v1/openapi.json, with your key). It lists more routes than this reference; routes not documented here are internal to Prophouse clients and may change without notice.
