---
title: "The OpenVibe.Today API"
canonical: "https://openvibe.today/developers"
updated: null
---

# The OpenVibe.Today API

HTML: [The OpenVibe.Today API](https://openvibe.today/developers)

Developers

# The Today API

JSON under `/api/v1`, calendars under `/ics/`, and three topics on OpenVibe.Events. A person is the session cookie, or a Network user token as a Bearer.

## Read

- `GET /api/v1/events?channel=&from=&to=&limit=`: Public events, soonest first (at most 100; cached 60 s).
- `GET /api/v1/events/:id`: One event. A cancelled one answers with `status: "cancelled"`; a followers-only one is 404 unless it is yours.
- `GET /api/v1/me/agenda?days=14`: Your events, reminded events and followed channels’ events (up to 60 days).
- `GET /api/v1/me/brief`: Today’s brief: sections of cited lines.

## Write (signed in)

- `POST /api/v1/events`: `{ kind, title, starts_at, ends_at?, tz, description?, visibility? }`. `Idempotency-Key` is honoured; at most 60 future events per person.
- `PATCH /api/v1/events/:id`: Change the title, times, zone, description or visibility (the calendar sequence goes up).
- `DELETE /api/v1/events/:id`: Cancel it (again is fine).
- `POST /api/v1/events/:id/remind`: `{ minutes_before: 0–1440 }`; `DELETE` removes it.

## Calendar feeds

- `GET /ics/@<username>.ics`: A channel’s public calendar (RFC 5545). Subscribe with `webcal://openvibe.today/ics/@<username>.ics`.
- `GET /e/:id.ics`: One event, for "Add to calendar".
- `GET /ics/<token>.ics`: Your private agenda; the link is on [your agenda](/me), and a new one replaces it at once.

## Events

Today publishes `today.event.scheduled`, `today.event.updated` and `today.event.cancelled`, and listens for `live.stream.started` and `live.stream.ended` to mark a stream live and then ended. A refusal is `400 { code: "today.invalid", field, message }`; others are `today.too_many`, `today.cross_site`, `today.not_found`.
