Typed async client for the Hinge dating-app API.
Project description
hinge-client
Typed, async Python client for the Hinge dating-app API — auth, recommendations,
profiles, rating, preferences, content, prompts, and Sendbird chat — built on httpx
and pydantic.
⚠️ Unofficial & reverse-engineered. For educational and research purposes only. Not affiliated with, authorized, or endorsed by Hinge / Match Group. Using it may violate Hinge's Terms of Service and can get your account banned. Use at your own risk.
Install
pip install hinge-client
# or
uv add hinge-client
Requires Python 3.14+.
Quickstart
import asyncio
from hinge import HingeClient, configure_logging
configure_logging() # opt-in colored console logs (no-op until you call it)
async def main() -> None:
client = HingeClient("+15555550123")
# --- auth (lifecycle lives on the client) ---
await client.initiate_login() # sends an SMS OTP
await client.submit_otp(input("OTP: "))
# If Hinge requires email 2FA, it raises HingeEmail2FAError carrying the
# case id; complete it with: await client.submit_email_code(code, case_id)
# --- data lives in resource namespaces ---
recs = await client.recommendations.list()
for feed in recs.feeds:
for subject in feed.subjects:
print(subject.subject_id)
me = await client.profile.me()
prefs = await client.profile.preferences()
limit = await client.rating.limit()
# human-readable enum labels, resolved in memory (no DB)
print(client.catalog.enums.label("religions", 6)) # -> "Muslim"
# the prompt library is fetched live and cached in memory
prompts = await client.prompts.fetch()
print(prompts.get_prompt_display_text("5b5799a05b162c2841794201"))
asyncio.run(main())
API at a glance
Client lifecycle (auth & session): initiate_login, submit_otp, submit_email_code,
ensure_fresh_token, is_session_valid, check_session_health, switch_session,
list_sessions, refresh_all_sessions.
Resource namespaces (data):
| Namespace | Examples |
|---|---|
client.recommendations |
list, repeat, standouts, standouts_v3, likes_received, matches, remove |
client.profile |
me, preferences, update, update_preferences, get, get_v2, content, traits, put_photos |
client.rating |
rate, respond, block, limit |
client.content |
settings, update_settings, evaluate_prompt, config, boost_status, store_account |
client.prompts |
fetch |
client.chat |
conversations, messages, send, react, mark_read, unread_count |
Catalog (client.catalog): in-memory enum-label lookup (enums.label/ordinal/is_valid)
plus the live prompt library. Logging: structlog throughout; call
configure_logging(level=..., pretty=...) for the colored console renderer — the library
never configures global logging on import.
Sessions persist to a per-phone JSON file under ./hinge_sessions/ (override with the
HINGE_SESSIONS_DIR env var).
Development
uv sync # install
uv run pre-commit install
make check # ruff + format + ty + leak-canary
make cov # tests with the 100% branch-coverage gate
License
MIT — see LICENSE.md.
Disclaimer
For educational and research purposes only. Don't be a creep. Don't use this for malicious purposes. Not responsible if you get banned, cursed, ghosted into oblivion, or matched with your cousin. If Hinge sends a C&D, they should also send a job offer.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hinge_client-0.1.0.tar.gz.
File metadata
- Download URL: hinge_client-0.1.0.tar.gz
- Upload date:
- Size: 31.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a00aeebf9a4fcb53282cee8e3bdb098937f7d94faa7bd901027bffecc277914
|
|
| MD5 |
72032ff102fb273d991dfe7db7e49c80
|
|
| BLAKE2b-256 |
6d5f399b817edce36e09a9dd8eb0a0acec189e37e8363b398dfa37e2d08fe1dc
|
Provenance
The following attestation bundles were made for hinge_client-0.1.0.tar.gz:
Publisher:
release.yml on Stupidoodle/hinge-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hinge_client-0.1.0.tar.gz -
Subject digest:
0a00aeebf9a4fcb53282cee8e3bdb098937f7d94faa7bd901027bffecc277914 - Sigstore transparency entry: 2021696121
- Sigstore integration time:
-
Permalink:
Stupidoodle/hinge-client@4be899db55fd420332438d535ccad2c328ceb8c7 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Stupidoodle
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4be899db55fd420332438d535ccad2c328ceb8c7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file hinge_client-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hinge_client-0.1.0-py3-none-any.whl
- Upload date:
- Size: 39.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af2bc0572d4888e1d5d385feeaf59814e2018567aa32c5f721632144477ee394
|
|
| MD5 |
0c9566361ece7057f8f6c6ec7b03dae4
|
|
| BLAKE2b-256 |
f0335513efd60252186f5913715416e22894d6ec9bd8302d46833ca2ddce4443
|
Provenance
The following attestation bundles were made for hinge_client-0.1.0-py3-none-any.whl:
Publisher:
release.yml on Stupidoodle/hinge-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hinge_client-0.1.0-py3-none-any.whl -
Subject digest:
af2bc0572d4888e1d5d385feeaf59814e2018567aa32c5f721632144477ee394 - Sigstore transparency entry: 2021696244
- Sigstore integration time:
-
Permalink:
Stupidoodle/hinge-client@4be899db55fd420332438d535ccad2c328ceb8c7 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Stupidoodle
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4be899db55fd420332438d535ccad2c328ceb8c7 -
Trigger Event:
release
-
Statement type: