---
title: "Internal Daily Cron"
method: POST
path: "/internal/daily_cron"
---

# Internal Daily Cron

`POST /internal/daily_cron`

## Request

- Base URL: `https://api.tellers.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tellers.ai/internal/daily_cron`
- Auth: none declared

Internal-only: billing maintenance. Runs, in order:

1. Token grant expiration (``expires_at`` in the past → zero remaining).
2. Yearly subscription monthly drips (``next_cron_grant <= today``).
3. Storage quota reset to default for lapsed subscriptions (period ended and
   status is not ``active`` / ``trialing``).
4. Removal of enterprise subscriptions whose period has ended.

All steps share one DB transaction. Called once per day by
``cron_job_daily``; kept as its own route so it can be driven by hand.
Idempotent for expirations within a day; yearly drips advance
``next_cron_grant`` so the same day does not double-grant.

## Response `200`

Successful Response

- DailyCronResponse
  - `grants_expired` integer, required
  - `yearly_grants_applied` integer, required
  - `storage_quota_resets` integer, required
  - `enterprise_user_subscriptions_ended` integer, required

---

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