---
title: "Push Schedules"
method: POST
path: "/api/agents/internal/schedules"
tags: ["agent-internal"]
---

# Push Schedules

`POST /api/agents/internal/schedules`

## Request

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

Tier C schedule push (plan 24 phase 3): the agent (via the SDK's
observeScheduler wrap, or plain curl) POSTs a read-only projection of
its own scheduler the moment it changes:

    {"schedules": [{"id": ..., "nextRunAt"?: ISO, "cron"?: "5-field",
                    "tz"?: IANA, "prompt"?: str, "name"?: str}, ...]}

The list is reconciled AUTHORITATIVELY through the same byo_sync
provider the Tier B GET /schedules poll uses, so push and poll can
never fight: sending the full current list adds, updates, and
garbage-collects in one call. An empty list clears all synced wakes.

Returns {"upserted": n, "deleted": n, "desired": n}.

## Headers

- `X-Maritime-Agent-Id` string, nullable
- `authorization` string, nullable

## Request body

- object

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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