{"id":46843860,"url":"https://github.com/ispyisail/helloclub-api-guide","last_synced_at":"2026-03-10T14:12:53.190Z","repository":{"id":341321767,"uuid":"1169691670","full_name":"ispyisail/helloclub-api-guide","owner":"ispyisail","description":"Unofficial Hello Club API guide — comprehensive field reference, examples, and lightweight Python client. Based on live API testing (2,137 members, 971 events, 61 endpoint variations). Covers undocumented fields, V2 migration, rate limiting, and gotchas.","archived":false,"fork":false,"pushed_at":"2026-03-01T04:24:29.000Z","size":47,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-01T07:29:39.794Z","etag":null,"topics":["api","api-guide","club-management","helloclub","httpx","python","rest-api"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ispyisail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-01T03:58:26.000Z","updated_at":"2026-03-01T04:24:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ispyisail/helloclub-api-guide","commit_stats":null,"previous_names":["ispyisail/helloclub-api-guide"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ispyisail/helloclub-api-guide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispyisail%2Fhelloclub-api-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispyisail%2Fhelloclub-api-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispyisail%2Fhelloclub-api-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispyisail%2Fhelloclub-api-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ispyisail","download_url":"https://codeload.github.com/ispyisail/helloclub-api-guide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ispyisail%2Fhelloclub-api-guide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30336289,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T12:41:07.687Z","status":"ssl_error","status_checked_at":"2026-03-10T12:41:06.728Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-guide","club-management","helloclub","httpx","python","rest-api"],"created_at":"2026-03-10T14:12:50.684Z","updated_at":"2026-03-10T14:12:53.161Z","avatar_url":"https://github.com/ispyisail.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hello Club API Guide\n\n[![CI](https://github.com/ispyisail/helloclub-api-guide/actions/workflows/ci.yml/badge.svg)](https://github.com/ispyisail/helloclub-api-guide/actions/workflows/ci.yml)\n\n\u003e **Tested against live API — Feb 2026** | API spec version: 2021-08-30 | ~40% of returned fields are undocumented in the official spec\n\n## V2 Migration Notice\n\nHello Club is migrating to a **V2 API** (`api-v2.helloclub.com`). Endpoints become plural, `club` becomes `org`, `member` becomes `profile`, and PUT becomes PATCH. See the [V2 Migration Guide](docs/v2-migration.md) for full details.\n\n---\n\n## What is the Hello Club API?\n\n[Hello Club](https://www.helloclub.com) is a club management platform used by sports clubs, community organisations, and co-working spaces. Their REST API lets you programmatically access members, events, attendees, bookings, transactions, and more.\n\nThe official OpenAPI spec (2021-08-30) is significantly out of date. This guide documents what the API **actually returns** based on live testing against a production club with 2,137 members and 971 events.\n\n## Requirements\n\n- Python 3.10+\n- [httpx](https://www.python-httpx.org/)\n\n## Quickstart\n\n```python\nimport os\nimport httpx\n\nAPI_KEY = os.environ[\"HELLOCLUB_API_KEY\"]\n\nwith httpx.Client(\n    base_url=\"https://api.helloclub.com\",\n    headers={\"X-Api-Key\": API_KEY},\n) as client:\n    data = client.get(\"/event\", params={\"limit\": 10, \"sort\": \"startDate\"}).json()\n\nfor event in data.get(\"events\", []):\n    print(f\"{event['name']} — {event['startDate'][:10]}\")\n```\n\nSet your API key as an environment variable:\n\n```bash\nexport HELLOCLUB_API_KEY=\"your-api-key-here\"\n```\n\nThen run any example:\n\n```bash\npip install httpx\npython examples/quickstart.py\n```\n\n## Getting an API Key\n\nSee [Authentication](docs/authentication.md) for how to get your API key from the Hello Club admin panel.\n\n## Documentation\n\n| Topic | Description |\n|---|---|\n| [Authentication](docs/authentication.md) | API key setup, headers, base URLs |\n| [Endpoints](docs/endpoints.md) | All endpoints with status, parameters, and quirks |\n| [Rate Limiting](docs/rate-limiting.md) | 30 req/min limit, 429 handling, retry strategy |\n| [V2 Migration](docs/v2-migration.md) | V2 transition guide with side-by-side comparison |\n| [Gotchas](docs/gotchas.md) | Broken endpoints, spec vs reality, known issues |\n\n## Field Reference\n\nDetailed field documentation for every entity type, including undocumented fields discovered through live probing:\n\n| Entity | Fields |\n|---|---|\n| [Events](docs/fields/events.md) | 80+ fields across identity, dates, attendance, rules, recurrence |\n| [Members](docs/fields/members.md) | 120+ fields including contact, financial, subscriptions, grades |\n| [Attendees](docs/fields/attendees.md) | 50+ fields covering attendance, payment, pricing rules |\n| [Memberships](docs/fields/memberships.md) | 40+ fields for membership type configuration |\n| [Transactions](docs/fields/transactions.md) | 30+ fields with financial details and tax info |\n| [Bookings](docs/fields/bookings.md) | 70+ fields including areas, tags, recurrence |\n| [Logs](docs/fields/logs.md) | Access, activity, audit, check-in, and email logs |\n| [Custom Fields](docs/fields/custom-fields.md) | Club-specific dynamic fields on events and members |\n\n## Examples\n\n| Script | Description |\n|---|---|\n| [quickstart.py](examples/quickstart.py) | Minimal auth + fetch events (\u003c 30 lines) |\n| [fetch_events.py](examples/fetch_events.py) | List events with date filtering |\n| [fetch_members.py](examples/fetch_members.py) | List members with search/filter |\n| [fetch_attendees.py](examples/fetch_attendees.py) | Get attendees for an event |\n| [manage_members.py](examples/manage_members.py) | Create a member, mark as attended |\n| [pagination.py](examples/pagination.py) | Handle paginated responses |\n| [rate_limit_handler.py](examples/rate_limit_handler.py) | Retry with backoff + Retry-After |\n| [field_discovery.py](examples/field_discovery.py) | Probe script to discover fields for your club |\n\n## Client Library\n\nA lightweight, reusable client with auth, retry, and rate limiting:\n\n```python\nfrom helloclub import HelloClubClient\n\nclient = HelloClubClient(api_key=\"your-key\")\nevents = client.get_events(days_ahead=7)\nmembers = client.get_members(limit=50)\n```\n\nSee [helloclub/client.py](helloclub/client.py) for the full implementation.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fispyisail%2Fhelloclub-api-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fispyisail%2Fhelloclub-api-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fispyisail%2Fhelloclub-api-guide/lists"}