---
title: "Approve an intent"
method: POST
path: "/v1/intents/approve"
tags: ["Intents"]
---

# Approve an intent

`POST /v1/intents/approve`

## Headers

- `requestId` string, uuid

## Request body

- CoreApproveIntentBody
  - `request` CoreApprove, required
    - `author` CoreUserReference, required
      - `id` string, uuid, required
      - `domainId` string, uuid, required
    - `expiryAt` string, date-time
    - `targetDomainId` string, uuid, required
    - `intentId` string, uuid, required
    - `proposalSignature` string, base64, required
    - `approvalReason` string
    - `type` 'Approve', required
  - `signature` string, base64, required

## Response `202`

Accepted

- CoreIntentResponse
  - `requestId` string, uuid, required

## Other responses

- `400` — One of: Domain locked (DomainLockedError); Intent expired (ExpiredRequestError); Invalid intent (InvalidIntentError); Invalid request (InvalidRequestError); Requester locked (RequesterLockedError)
- `401` — One of: Invalid JWT (InvalidJwtError); Invalid signature (InvalidSignatureError); User not authorized (PermissionDeniedError)
- `404` — Entity or Domain not found (EntityNotFoundError)
- `409` — Request already exists (ConflictingRequestIdError)
- `500` — (SystemError)

---

[API](https://skmtc.net/ripple/apis/ripple-custody-api.md) · [All operations](https://skmtc.net/ripple/apis/ripple-custody-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ripple/ripple-custody-api/revisions/0b55c0ddf07a/schema)
