---
title: "Participate in an exchange. Posting an empty body will start the exchange or return what the exchange is expecting to complete the next step. Posting a Verifiable Presentation Request will result in either a 4xx error or one of the following - a Verifiable Presentation or Verifiable Presentation Request that conforms to the client's request. If a Verifiable Presentation is sent, an additional Verifiable Presentation Request may also be sent to continue the exchange."
method: POST
path: "/workflows/{localWorkflowId}/exchanges/{localExchangeId}"
tags: ["Credentials"]
---

# Participate in an exchange. Posting an empty body will start the exchange or return what the exchange is expecting to complete the next step. Posting a Verifiable Presentation Request will result in either a 4xx error or one of the following - a Verifiable Presentation or Verifiable Presentation Request that conforms to the client's request. If a Verifiable Presentation is sent, an additional Verifiable Presentation Request may also be sent to continue the exchange.

`POST /workflows/{localWorkflowId}/exchanges/{localExchangeId}`

Participate in an exchange. Posting an empty body will start the exchange or return what the exchange is expecting to complete the next step.

## Parameters

- `./components/parameters/path/LocalWorkflowId.yml` — unresolved $ref
- `./components/parameters/path/LocalExchangeId.yml` — unresolved $ref

## Request body

- union — A message from the client to the server during an exchange.
  - object — An empty object to initiate the exchange or request what the exchange is expecting to complete the next step.
  - object
    - `verifiablePresentationRequest` VerifiablePresentationRequest, required — unresolved $ref
    - `referenceId` string — When the server previously sent a referenceId, the client SHOULD include it here to aid debugging and message correlation. The value SHOULD be a urn:uuid value.
  - object
    - `verifiablePresentation` VerifiablePresentation, required — unresolved $ref
    - `referenceId` string — When the server previously sent a referenceId, the client SHOULD include it here to aid debugging and message correlation. The value SHOULD be a urn:uuid value.
  - object
    - `redirectUrl` string, required — A client MAY send an interaction URL to the server as a redirectUrl, inviting the server to become the client for a different related exchange starting with that interaction URL. A server MAY engage with this redirectUrl.
    - `referenceId` string — When the server previously sent a referenceId, the client SHOULD include it here to aid debugging and message correlation. The value SHOULD be a urn:uuid value.

## Response `200`

Exchange progressed.

- union — A message from the server to the client during an exchange.
  - object
    - `verifiablePresentationRequest` VerifiablePresentationRequest, required — unresolved $ref
    - `referenceId` string — An optional identifier to correlate exchange messages. A server MAY include this value; if present, the client SHOULD include it in its next message. The value SHOULD be a urn:uuid value.
  - object
    - `verifiablePresentation` VerifiablePresentation, required — unresolved $ref
    - `referenceId` string — An optional identifier to correlate exchange messages. A server MAY include this value; if present, the client SHOULD include it in its next message. The value SHOULD be a urn:uuid value.
  - object
    - `redirectUrl` string, required — The URL the exchange wishes to redirect the client to.
    - `referenceId` string — An optional identifier to correlate exchange messages. A server MAY include this value; if present, the client SHOULD include it in its next message. The value SHOULD be a urn:uuid value.
  - object — An object empty of exchange continuation properties indicating the server wishes to terminate the exchange.
    - `referenceId` string — An optional identifier to correlate exchange messages. A server MAY include this value; if present, the client SHOULD include it in its next message, if there is a next message to send. The value SHOULD be a urn:uuid value.

## Other responses

- `400` — Invalid input
- `401` — Not Authorized
- `500` — Internal Error

## Changes

- **2026-03-17** `17b15e1d25a1` — 1 info
  - added the optional property `oneOf[subschema #4]/referenceId` to the response with the `200` status
- **2026-03-17** `283c57012d6f` — 1 breaking, 1 info
  - added `subschema #4` to the response body `oneOf` list for the response status `200`
  - added `subschema #4` to the request body `oneOf` list
- **2026-03-17** `736d8da58f25` — 3 breaking, 2 info
  - removed `subschema #1, subschema #2` from the request body `oneOf` list
  - the request's body type changed from no type to `object`
  - added `subschema #1, subschema #2, subschema #3` to the response body `oneOf` list for the response status `200`
  - added `subschema #1, subschema #2, subschema #3` to the request body `oneOf` list
  - …1 more
- **2025-09-23** `466d8897863d` — 1 info
  - added `subschema #1, subschema #2` to the request body `oneOf` list
- **2025-09-23** `474599254bb9` — 1 breaking
  - removed `subschema #1, subschema #2` from the request body `oneOf` list

[Change history](https://skmtc.dev/w3c/apis/verifiable-credential-api-for-lifecycle-management/changes/workflows/:localWorkflowId/exchanges/:localExchangeId/post.md)

---

[API](https://skmtc.dev/w3c/apis/verifiable-credential-api-for-lifecycle-management.md) · [All operations](https://skmtc.dev/w3c/apis/verifiable-credential-api-for-lifecycle-management/llms.txt) · [OpenAPI document](https://skmtc.dev/w3c/apis/verifiable-credential-api-for-lifecycle-management/revisions/41a7253d3bca?raw)
