---
title: "Reserve an MPP deposit intent's settle (settle worker, service key)"
method: POST
path: "/service/mpp-settler/mpp-deposit-intents/{id}/settle"
tags: ["fulfillments"]
---

# Reserve an MPP deposit intent's settle (settle worker, service key)

`POST /service/mpp-settler/mpp-deposit-intents/{id}/settle`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/service/mpp-settler/mpp-deposit-intents/{id}/settle`
- Auth: API key in header `X-API-Key`

Service-key only (enforcer-mpp-settler). Always mode=reserve: reserves the (intent, settle) action and returns the plan with action_id and reserved=true. v3 sends nothing; the worker signs, then calls .../complete with the hashes or .../release. dry_run=false or any mode but reserve is 400 send_not_allowed. max_input_amount (uint256 decimal, base units, > 0) replaces the quoted max input. Refused (409) unless the intent is received or overpaid. Idempotent per intent. The actor recorded is service:<label>.

## Path parameters

- `id` string, required

## Request body

- InternalDeliveryHttpHandlerMPPSettlerSettleRequest
  - `deadline_seconds` integer
  - `max_fee_bps` integer
  - `max_impact_bps_accepted` integer
  - `max_input_amount` string

## Response `200`

OK

- InternalDeliveryHttpHandlerMPPLeverResponse
  - `data` EnforcerV3InternalDomainMppdepositLeverResult
    - `action_id` string: ActionID is the mpp_deposit_actions row backing a real call or a reservation; Reserved is true while that row has no tx hash yet (the sender holds it but has not completed it).
    - `actor` string
    - `dry_run` boolean
    - `intent_id` string
    - `plan` EnforcerV3InternalDomainMppdepositPlan
      - `kind` string
      - `steps` EnforcerV3InternalDomainMppdepositStep[]
        - `args` object
        - `calldata` string
        - `function` string
        - `name` string
        - `to` string
    - `replayed` boolean
    - `reserved` boolean
    - `state` string
    - `tx_hashes` string[]
  - `success` boolean

## Other responses

- `400`: invalid_body / send_not_allowed / invalid_max_input_amount
- `401`: invalid_service_key
- `404`: Not Found
- `409`: Conflict
- `503`: Service Unavailable

---

[API](https://skmtc.dev/instruxi/apis/enforcer-api.md) · [All operations](https://skmtc.dev/instruxi/apis/enforcer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/instruxi/apis/enforcer-api/revisions/fa82bc1becc0?raw)
