Treeship
Hub API

GET /v1/artifacts/:id

Retrieve a signed artifact from Hub. No authentication required.

Request

GET /v1/artifacts/:id
ParameterTypeDescription
:idstringThe artifact ID (e.g., art_f7e6d5c4b3a2f7e6)

No authentication required. All artifacts on Hub are publicly readable.

Response

{
  "artifact_id": "art_f7e6d5c4b3a2f7e6",
  "payload_type": "application/vnd.treeship.action.v1+json",
  "envelope_json": "{\"payload\":\"...\",\"payloadType\":\"...\",\"signatures\":[...]}",
  "digest": "sha256:abc123...",
  "signed_at": 1711500000,
  "parent_id": "art_previous123",
  "hub_url": "https://treeship.dev/verify/art_f7e6d5c4b3a2f7e6",
  "rekor_index": 12345,
  "hub_id": "hub_9f8e7d6c"
}
FieldTypeDescription
artifact_idstringContent-addressed artifact ID
payload_typestringDSSE payload type MIME string
envelope_jsonstringThe complete DSSE envelope, including signed payload and signatures
digeststringSHA-256 digest of the PAE bytes
signed_atintegerUnix timestamp of when the artifact was signed
parent_idstring or nullParent artifact ID
hub_urlstringPublic verification URL
rekor_indexinteger or nullSigstore Rekor log index
hub_idstringThe hub connection that pushed this artifact

Errors

StatusBodyCause
404{"error": "artifact not found"}No artifact exists with this ID

Example

curl https://api.treeship.dev/v1/artifacts/art_f7e6d5c4b3a2f7e6

Notes

  • The envelope_json field contains the full DSSE envelope. You can verify it locally after importing it with treeship hub pull.
  • The response includes hub_id, which identifies which device pushed the artifact. This is not a secret -- it is a public identifier.
  • Use treeship hub pull <id> from the CLI to download an artifact into your local store.