Skip to content

Versions

Every push of changed bytes creates a new immutable version (an object). The versions of one prop form a lineage, and the entry points at one of them as its current version (object_id on the entry, also called the face). Old versions are never overwritten.

Method and path Scope Purpose
GET /lineages/{lineage_id} read Version history
POST /entries/{entry_id}/restore write Make an earlier version current

Lineage ids look like guid:6F9619FF8B86D011B42D00C04FC964FF (anchored on an Unreal package GUID) or ph:0b6e4c1f9a2d4f0e8c7b5a3d2e1f0a9b (assigned by Prophouse). URL-encode the colon if your client needs it (guid%3A...).

{
"lineage_id": "guid:6F9619FF8B86D011B42D00C04FC964FF",
"entry": { "id": 412, "name": "SM_Barrel_Rusty", "object_id": 1880, "status": "active" },
"objects": [
{
"id": 1880,
"content_hash": "9f2c...e41a",
"lineage_anchor": "stamp",
"parent_object_id": 1502,
"variant_label": null,
"asset_class": "StaticMesh",
"asset_name": "SM_Barrel_Rusty",
"origin_path": "/Game/Props/Industrial/SM_Barrel_Rusty",
"blob_size": 1048576,
"source_ext": null,
"engine_version": "5.8.0",
"package_guid": "6F9619FF8B86D011B42D00C04FC964FF",
"pack": { "id": 3, "name": "Industrial Yard" },
"published_by": { "id": 7, "name": "<user>", "display_name": "Sam Rigger" },
"date_ingested": "2026-07-20T09:11:40Z",
"is_face": true
}
]
}
Field Description
objects Every version in the lineage, oldest first.
entry The entry showing this lineage, or null if none does.
parent_object_id The version this one was made from. Together these form the version tree.
lineage_anchor How the version joined the lineage: guid, stamp, minted or user_attached.
variant_label Set when the version was pushed as a variant.
is_face true for the entry’s current version.

Unknown lineage: 404 LINEAGE_NOT_FOUND.

To download any version, use its content_hash with Downloads. To see review state or comments pinned to a version, match on object_id in Reviews and Comments.

Make an earlier version the entry’s current version.

Terminal window
curl -X POST -H "Authorization: Bearer $PH_KEY" -H "Content-Type: application/json" \
-d '{"object_id": 1502}' \
https://api.prophouse.dev/api/v1/entries/412/restore
Field Type Description
object_id integer, required A version from the entry’s own lineage.

Returns the full entry detail. Restoring does not create a new version: the entry simply points at the old one again, with that version’s metadata, thumbnail and review state. It records an entry.restore event in the activity feed. Restoring the version that is already current changes nothing.

Error Cause
404 ENTRY_NOT_FOUND Unknown entry.
404 OBJECT_NOT_FOUND Unknown version.
409 LINEAGE_CONFLICT The version belongs to a different lineage (details.entry_lineage_id, details.object_lineage_id).
409 LOCKED Someone else has the prop checked out. The message names them, and details.holder and details.lock describe the lock. Admins and the lock holder are not blocked.

If you hold the lock yourself, restoring moves your lock’s base_object_id to the restored version, so your next check-in is fenced on it; see Check-out locks.

Anyone pushing on top of the old current version after a restore gets 409 STALE_FACE if they sent expected_face_object_id; see Push a new version.