---
title: "Write Petri Blob"
method: POST
path: "/api/v1/runs/{id}/petri/blobs"
tags: ["Run Internals"]
---

# Write Petri Blob

`POST /api/v1/runs/{id}/petri/blobs`

Stores a blob by content for the run's owner and returns its SHA-256
digest, the same content address Fabro's blob store uses. Idempotent
by construction.

## Path parameters

- `id` string, required

## Query parameters

- `owner` string, required

## Response `200`

Blob stored

- WriteBlobResponse — Content-addressed hash of a stored blob.
  - `hash` string, required — Content-addressed SHA-256 hash of a stored blob. Hex input is case-insensitive; Fabro emits the canonical lowercase form.

## Other responses

- `404` — Run not in the store (`petri_run_not_found`)
- `409` — `owner` no longer holds the run's lease (`petri_stale_owner`)

## Changes

- **2026-09-19** `efc644ab09d4` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/fabro-sh/apis/fabro-run-api/changes/api/v1/runs/:id/petri/blobs/post.md)

---

[API](https://skmtc.dev/fabro-sh/apis/fabro-run-api.md) · [All operations](https://skmtc.dev/fabro-sh/apis/fabro-run-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fabro-sh/apis/fabro-run-api/revisions/b760ef95cb3a?raw)
