---
title: "Add or take away credits"
method: POST
path: "/api/ai-credits/wallets/{wallet_id}/credits"
tags: ["AI credit client wallets"]
---

# Add or take away credits

`POST /api/ai-credits/wallets/{wallet_id}/credits`

## Request

- Base URL: `https://api.duda.co`
- URL: `https://api.duda.co/api/ai-credits/wallets/{wallet_id}/credits`
- Auth: HTTP basic

Moves one balance: RECURRENCE moves recurrence_balance (the allowance the next cycle refills to is unchanged), TOPUP moves topup_balance. A positive amount adds, a negative one takes away, and a balance never goes below zero. For corrections only - AI usage is deducted automatically. Errors: wallet_not_found, invalid_value.

## Path parameters

- `wallet_id` string, required

## Request body

- ApiSubWalletCreditsRequest
  - `amount` string, required: A signed decimal string: positive adds, negative takes away. Zero is rejected; at most 2 decimals and 99999999.99 either way. A balance never goes below zero - taking more than is there lands it on zero.
  - `type` 'RECURRENCE' | 'TOPUP', required: Which balance moves.

## Response `200`

OK

- ApiSubWalletResponse
  - `assigned_accounts` ApiAccountRefInfo[]: The client accounts drawing from this wallet, empty when none is. Moved by assign and unassign.
    - `account_name` string: The client's account name, as the Accounts API returns it.
  - `created_at` string, date-time
  - `id` string: Minted by Duda and immutable. Store it against your own customer record.
  - `name` string: The id when no name was set.
  - `recurrence_amount` string: The recurring allowance, as a decimal string.
  - `recurrence_balance` string: What is left of the recurring allowance this cycle, as a decimal string. Moved by POST /credits.
  - `recurrence_day` integer: Day of the month (1-31) the cycle turns over. Clamps to the month's length.
  - `topup_balance` string: A single flat top-up figure, as a decimal string. It never expires.
  - `updated_at` string, date-time

## Other responses

- `400`: Bad request. The request is malformed or failed validation.
- `401`: Unauthorized. The credentials are missing or invalid.
- `429`: Too many requests. The rate limit was exceeded.

---

[API](https://skmtc.dev/duda/apis/duda-partner-api.md) - [All operations](https://skmtc.dev/duda/apis/duda-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/duda/apis/duda-partner-api/revisions/52be4d41cb12?raw)
