# Schedy > A self-hostable, ultra-lightweight HTTP task scheduler. Schedule HTTP requests to any endpoint at any time, with headers, payloads, retries, and full status tracking. ## Docs - [Introduction](https://schedy.mintlify.app/index.md): Schedy is a self-hostable, ultra-lightweight HTTP task scheduler - fire HTTP requests to any endpoint at any time, with headers, payloads, retries, and full status tracking. - [Install & Run](https://schedy.mintlify.app/installation.md): Run Schedy with Docker, Docker Compose, a prebuilt binary, on Kubernetes, or build it from source. - [Configuration](https://schedy.mintlify.app/configuration.md): Tune Schedy with the --port flag and a handful of environment variables. - [Authentication](https://schedy.mintlify.app/authentication.md): Protect every endpoint with an API key using the X-API-Key header. - [Backup & Restore](https://schedy.mintlify.app/backup.md): Take a safe online snapshot of Schedy's store and restore it, using BadgerDB's native backup - no dependencies, no downtime. - [Status & History](https://schedy.mintlify.app/concepts/status.md): Every task carries a lifecycle status and a per-attempt log, so you can always answer: did it run, how many tries, and why did it fail? - [Retries](https://schedy.mintlify.app/concepts/retries.md): Retry failed deliveries with a fixed interval or exponential backoff with full jitter. - [Delivery Guarantee](https://schedy.mintlify.app/concepts/delivery.md): Schedy is at-least-once: attempts are retried and mid-run tasks are re-queued on restart, so make your receivers idempotent. - [Catch-up](https://schedy.mintlify.app/concepts/catch-up.md): What happens to tasks that came due while Schedy was down, and how to stop the recovery from becoming your incident. - [Idempotency](https://schedy.mintlify.app/concepts/idempotency.md): A repeated POST /tasks returns the existing task instead of scheduling a duplicate - keyed by an Idempotency-Key header or by an identical schedule. - [Create a task](https://schedy.mintlify.app/api/create.md): POST /tasks - schedule an HTTP request for a future time. - [List tasks](https://schedy.mintlify.app/api/list.md): GET /tasks - page through tasks, optionally filtered by lifecycle status. - [Get a task](https://schedy.mintlify.app/api/get.md): GET /tasks/{id} - fetch a single task with its status, attempts, and finished_at. - [Update a task](https://schedy.mintlify.app/api/update.md): PUT /tasks/{id} - replace a pending task's schedule and delivery settings while keeping its id. - [Replay a task](https://schedy.mintlify.app/api/replay.md): POST /tasks/{id}/run - re-arm a finished task to fire again now. - [Cancel a task](https://schedy.mintlify.app/api/cancel.md): DELETE /tasks/{id} - soft-cancel a task, keeping it in history for auditing. - [Bulk delete](https://schedy.mintlify.app/api/bulk-delete.md): DELETE /tasks - hard-delete tasks matching a filter across all statuses. - [Health checks](https://schedy.mintlify.app/api/health.md): GET /healthz and /readyz - liveness and readiness probes for Kubernetes and container orchestration. No authentication required. - [Metrics](https://schedy.mintlify.app/api/metrics.md): GET /metrics - Prometheus metrics for queue depth, backlog, delivery outcomes, and lateness.