---
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 - 1. one or more Verifiable Presentations or 2. a Verifiable Presentation Request that conforms to the client's request. If one or more Verifiable Presentations are 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 - 1. one or more Verifiable Presentations or 2. a Verifiable Presentation Request that conforms to the client's request. If one or more Verifiable Presentations are 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 <code>urn:uuid</code> 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 <code>urn:uuid</code> value.
  - object
    - `verifiablePresentation` VerifiablePresentation[], required — The Verifiable Presentations that the client sends to the server. — 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 <code>urn:uuid</code> 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 <code>urn:uuid</code> value.

## Response `200`

Exchange progressed.

- union — A message from the server to the client during an exchange.
  - object — An object empty of exchange continuation properties indicating the server wishes to terminate the 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 <code>urn:uuid</code> 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 <code>urn:uuid</code> value.
  - object
    - `verifiablePresentation` VerifiablePresentation[], required — The Verifiable Presentations that the server sends to the client. — 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 <code>urn:uuid</code> value.
  - object
    - `redirectUrl` string, required — The URL the exchange wishes to redirect the client to. A server MAY also send an interaction URL to the client as a redirectUrl, inviting the client to automatically initiate another exchange. In this case, a client that understands interaction URLs MAY retrieve the protocols associated with the interaction URL and start the exchange. A client that does not understand interaction URLs MAY direct the holder to the redirectUrl in the browser, where an HTML page MAY display next steps.
    - `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 <code>urn:uuid</code> value.

## Other responses

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

## Changes

- **2026-07-13** `1005da1718e7` — 1 breaking, 1 info
  - added `subschema #1, subschema #5` to the response body `oneOf` list for the response status `200`
  - removed `subschema #4, subschema #5` from the response body `oneOf` list for the response status `200`
- **2026-07-12** `fc436fbfba78` — 1 breaking, 1 info
  - added `subschema #4, subschema #5` to the response body `oneOf` list for the response status `200`
  - removed `subschema #1, subschema #5` from the response body `oneOf` list for the response status `200`
- **2026-07-12** `bbb07fe41f28` — 2 breaking, 2 info
  - removed `subschema #2, subschema #3, subschema #4` from the request body `oneOf` list
  - added `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5` to the response body `oneOf` list for the response status `200`
  - added `subschema #2, subschema #3, subschema #4, subschema #5` to the request body `oneOf` list
  - removed `subschema #1, subschema #2, subschema #3, subschema #4` from the response body `oneOf` list for the response status `200`
- **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

[Full 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-service-production.skmtc.workers.dev/v1/apis/w3c/verifiable-credential-api-for-lifecycle-management/revisions/3ba233461759/schema)
