---
title: "Attest concrete source workspace provenance"
method: POST
path: "/consumer/artifact-workspace-proofs/{sourceId}"
tags: ["artifacts"]
---

# Attest concrete source workspace provenance

`POST /consumer/artifact-workspace-proofs/{sourceId}`

## Request

- Base URL: `https://api.agentsky.dev/v1`
- URL: `https://api.agentsky.dev/v1/consumer/artifact-workspace-proofs/{sourceId}`
- Auth: HTTP bearer

Pure source-owner provenance callback: no lease, content write or new account authority. Same real ast_ caller uses the canonical purpose-bound proof=caller branch; existing asp_ authority must match its concrete publisher/source. Owner mapping, placement/session, proposed placement and optional exact shared alias are measured, not caller-assumed.

## Path parameters

- `sourceId` string, required

## Request body

- object
  - `purpose` 'artifact_workspace_write', required
  - `request_id` string, uuid, required
  - `source_epoch` integer, required
  - `publisher_id` string
  - `proposed_placement` object, nullable
    - `slug` string, required
    - `created_at` string, date-time, required
  - `shared_token` string

## Response `200`

Exact lifecycle receipt; private, no-store

- unknown

## Other responses

- `default`: Error { error: { code, message } }; changed facts are 409, unavailable recovery retains fences and capacity

## Changes

- **2026-11-02** `e5e8f0229a99`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/agentsky/apis/agentsky-developer-api/changes/consumer/artifact-workspace-proofs/:sourceId/post.md)

---

[API](https://skmtc.dev/agentsky/apis/agentsky-developer-api.md) - [All operations](https://skmtc.dev/agentsky/apis/agentsky-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agentsky/apis/agentsky-developer-api/revisions/0d435187cd55?raw)
