AnyMoment Python documentation
Create and manage recurring calendar events with natural language. Use the SDK in your app or the CLI from the terminal.
Features
Natural language event creation
Create complex recurring events from simple text.
Full calendar management
Create, update, delete, and share calendars.
Secure token management
Encrypted token storage with automatic refresh.
Library & CLI
Use programmatically or from the command line.
Installation
Library only:
pip install anymomentWith CLI (recommended for terminal use):
pip install anymoment[cli]Quick start — CLI
# Login
anymoment auth login
# Create a calendar
anymoment calendars create "Work Calendar" --timezone "America/New_York"
# Create an event from natural language
anymoment events create "Weekly team meeting every Monday at 10 AM" --calendar <calendar-id>
# List events
anymoment events list --calendar <calendar-id>
# Get event instances for a date range
anymoment events instances <event-id> --from "2026-01-01" --to "2026-03-31"Quick start — Library
from anymoment import Client
# Initialize client
client = Client(api_url="https://api.anymoment.sineways.tech")
# Login
client.login(email="user@example.com", password="secret")
# Create calendar
calendar = client.create_calendar(
name="Work Calendar",
timezone="America/New_York"
)
# Create event from natural language
event = client.create_event_from_text(
recurrence_text="Weekly team meeting every Monday at 10 AM",
calendar_id=calendar["id"]
)
# Get event instances for a date range
instances = client.get_event_instances(
event_id=event["id"],
from_date="2026-01-01",
to_date="2026-03-31"
)Configuration
Environment variables:
ANYMOMENT_BASE_URL— Default API URL (default: https://api.anymoment.sineways.tech)ANYMOMENT_DEFAULT_CALENDAR— Default calendar IDANYMOMENT_DEFAULT_TIMEZONE— Default timezone
Config file: ~/.anymoment/config.json. Manage via CLI:
anymoment config set-url https://api.anymoment.sineways.tech
anymoment config set-timezone America/New_York
anymoment config set-calendar <calendar-id>
anymoment config showCLI commands
Authentication
anymoment auth login [--host URL]
anymoment auth logout [--host URL]
anymoment tokens list
anymoment tokens clearCalendars
anymoment calendars list [--active/--inactive] [--limit N] [--offset N]
anymoment calendars create <name> [--description TEXT] [--timezone TZ] [--color COLOR]
anymoment calendars get <id>
anymoment calendars update <id> [--name NAME] [--timezone TZ] [--color COLOR] [--active/--inactive]
anymoment calendars delete <id>
anymoment calendars share <id> <user-id> [--role ROLE]
anymoment calendars update-share <id> <user-id> --role ROLE
anymoment calendars unshare <id> <user-id>
anymoment calendars add-event <calendar-id> <event-id> [--display-order N] [--color COLOR]
anymoment calendars remove-event <calendar-id> <event-id>
anymoment calendars batch-add-events <calendar-id> <event-id> [<event-id> ...]
anymoment calendars batch-remove-events <calendar-id> <event-id> [<event-id> ...]
anymoment calendars webhook-url <id>Events
anymoment events create "TEXT" [--name NAME] [--timezone TZ] [--calendar ID] [--model high|low|mega]
anymoment events list [--calendar ID] [--active/--inactive] [--limit N] [--offset N] [--minimal]
anymoment events get <id>
anymoment events update <id> [--name NAME] [--description TEXT]
anymoment events delete <id>
anymoment events toggle <id>
anymoment events instances <id> [--from DATE] [--to DATE] [--optimized]
anymoment events next <id>
anymoment events export <id> [--format ics|csv] [--from DATE] [--to DATE] [--out FILE]Agenda & search
anymoment agenda list [--start ISO] [--end ISO] [--calendar ID] [--no-cache] [--webhooks]
anymoment agenda search <query> [--start ISO] [--end ISO] [--calendar ID] [--active/--inactive] [--limit N] [--offset N] [--no-instances]Users
anymoment users meCommon options: --host, -h (API URL), --raw (full JSON), --pipe (IDs only), --timezone, -z, --calendar, -c.
Library API reference
Initialize the client:
from anymoment import Client
client = Client(api_url="https://api.anymoment.sineways.tech", token="optional-token")Authentication
client.login(email, password)client.refresh_token()client.get_user_info()
Calendars
client.list_calendars(...),get_calendar,create_calendar,update_calendar,delete_calendarclient.share_calendar(calendar_id, user_id, role)— share with user and set permissionsclient.update_calendar_share_role(calendar_id, user_id, role)— update shared user's roleclient.unshare_calendar(calendar_id, user_id)— remove shareclient.get_calendar_webhook_url(calendar_id)
Events
client.list_events(...),get_event,create_event_from_text(recurrence_text, ...)client.update_event,delete_event,toggle_eventclient.get_event_instances(event_id, from_date, to_date, optimized)client.get_next_event_instance(event_id)
Agenda & search
client.get_agenda(start, end, calendar_ids, use_cache, include_webhooks)client.search_events(q, start, end, calendar_ids, is_active, limit, offset, include_instances)
Calendar–event links (add / remove events to or from calendars)
client.link_event_to_calendar(calendar_id, event_id, display_order, color_override)— add one eventclient.unlink_event_from_calendar(calendar_id, event_id)— remove one event (unlink only)client.batch_add_events_to_calendar(calendar_id, event_ids, ...)— add multiple eventsclient.batch_remove_events_from_calendar(calendar_id, event_ids)— remove multiple events (unlink only)
Error handling
The SDK raises specific exceptions:
from anymoment import (
AuthenticationError,
NotFoundError,
ValidationError,
ServerError,
)
try:
calendar = client.get_calendar("invalid-id")
except NotFoundError:
print("Calendar not found")
except AuthenticationError:
print("Authentication failed — please login again")
except ValidationError as e:
print(f"Validation error: {e.message}")
except ServerError as e:
print(f"Server error: {e.message}")Support
- API base URL: https://api.anymoment.sineways.tech
- Issues: GitHub Issues
- License: MIT
By Sineways Technology. AnyMoment — write moments the way you think them.