---
title: "Upsert points epoch"
method: PUT
path: "/admin/points/epochs"
tags: ["Admin"]
---

# Upsert points epoch

`PUT /admin/points/epochs`

## Request

- Base URL: `https://api.testnet.rise.trade`
- URL: `https://api.testnet.rise.trade/admin/points/epochs`
- Auth: none required
- TypeScript: <https://skmtc.dev/rise/apis/risex-rest-api/docs/admin/points/epochs/put.ts> (a function with typed inputs; its response is checked against the schema)

Create or update a points epoch's schedule (internal).

## Request body

- ApiUpsertPointsEpochRequest
  - `epoch_id` string
  - `starts_at` string, int64: 0/omitted = unset — optional; not required for a retroactive/ad-hoc drop.
  - `ends_at` string, int64
  - `distribution_at` string, int64
  - `description` string
  - `is_adhoc` boolean: Set true for a one-off/retroactive drop that should not be picked up as GetCurrentEpoch's "next upcoming drop" (see PointsEpochDto.is_adhoc).

## Response `200`

A successful response.

- ApiUpsertPointsEpochResponse
  - `epoch` ApiPointsEpochDto: PointsEpochDto is an epoch's schedule. ends_at/distribution_at are 0 when unset.
    - `epoch_id` string
    - `starts_at` string, int64: 0 = unset. Deprioritized: distribution_at is what drives reveal/countdown, starts_at is purely descriptive (e.g. does not apply to a retroactive drop).
    - `ends_at` string, int64
    - `distribution_at` string, int64: 0 = unset. Points ingested for this epoch are invisible on every public read until now >= distribution_at.
    - `description` string
    - `is_adhoc` boolean: An ad-hoc (one-off/retroactive) drop still schedules and reveals normally, but is excluded from GetCurrentEpoch's "next upcoming drop" selection so it never overrides the frontend's weekly countdown.

## Other responses

- `default`: An unexpected error response.

## Changes

- **2026-11-03** `98eabcd6a6ad`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rise/apis/risex-rest-api/changes/admin/points/epochs/put.md)

---

[API](https://skmtc.dev/rise/apis/risex-rest-api.md) - [All operations](https://skmtc.dev/rise/apis/risex-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rise/apis/risex-rest-api/revisions/98eabcd6a6ad?raw)
