---
title: "Redeem Referral"
method: POST
path: "/api/v1/referrals/redeem"
tags: ["referrals"]
---

# Redeem Referral

`POST /api/v1/referrals/redeem`

## Request

- Base URL: `https://memory.kagura-ai.com` (the document declares no server; this is the origin it was published from)
- URL: `https://memory.kagura-ai.com/api/v1/referrals/redeem`
- Auth: none declared

Redeem a referral code and credit both parties.

Refusals are 400s with a ``REFERRAL-*`` error code (see
``utils/exceptions.py``); they are deliberately uniform so probing a code
reveals nothing about whether it exists or who owns it.

Args:
    payload: The submitted code.
    user: Authenticated session user (the invitee).
    db: Database session.

Returns:
    The created grant.

## Headers

- `authorization` string, nullable

## Request body

- RedeemRequest: A referral code submitted by a newly-signed-up user.
  - `code` string, required

## Response `201`

Successful Response

- ReferralGrantResponse: A ledger row as seen by the user who earned it. Inherits ``TZAwareBaseModel`` (not ``BaseModel``) because it carries datetimes: the naive-UTC columns must serialize with a ``Z`` suffix or JS clients read them as local time.
  - `id` unknown, required
  - `granted_at` unknown, required
  - `referrer_bonus_memories` unknown, required
  - `referred_bonus_memories` unknown, required
  - `revoked_at` unknown, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud.md) · [All operations](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud/llms.txt) · [OpenAPI document](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud/revisions/09f17f5ada29?raw)
