Skip to main content

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.

CI PyPI Python License: MIT Ruff

⚠️ 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.

Metadata

Release files for hinge-client 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hinge-client 0.1.0
File Size Uploaded
hinge_client-0.1.0.tar.gz 31.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hinge-client 0.1.0
File Interpreter ABI Platform
hinge_client-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 70.7 kB

Release files / hinge_client-0.1.0.tar.gz

Download URL hinge_client-0.1.0.tar.gz
Size 31.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0a00aeebf9a4fcb53282cee8e3bdb098937f7d94faa7bd901027bffecc277914
BLAKE2b-256 checksum
How to use checksums
6d5f399b817edce36e09a9dd8eb0a0acec189e37e8363b398dfa37e2d08fe1dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release files / hinge_client-0.1.0-py3-none-any.whl

Download URL hinge_client-0.1.0-py3-none-any.whl
Size 39.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
af2bc0572d4888e1d5d385feeaf59814e2018567aa32c5f721632144477ee394
BLAKE2b-256 checksum
How to use checksums
f0335513efd60252186f5913715416e22894d6ec9bd8302d46833ca2ddce4443
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page