Skip to main content

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.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hinge_client-0.1.0.tar.gz (31.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hinge_client-0.1.0-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

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

Hashes for hinge_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0a00aeebf9a4fcb53282cee8e3bdb098937f7d94faa7bd901027bffecc277914
MD5 72032ff102fb273d991dfe7db7e49c80
BLAKE2b-256 6d5f399b817edce36e09a9dd8eb0a0acec189e37e8363b398dfa37e2d08fe1dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for hinge_client-0.1.0.tar.gz:

Publisher: release.yml on Stupidoodle/hinge-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for hinge_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af2bc0572d4888e1d5d385feeaf59814e2018567aa32c5f721632144477ee394
MD5 0c9566361ece7057f8f6c6ec7b03dae4
BLAKE2b-256 f0335513efd60252186f5913715416e22894d6ec9bd8302d46833ca2ddce4443

See more details on using hashes here.

Provenance

The following attestation bundles were made for hinge_client-0.1.0-py3-none-any.whl:

Publisher: release.yml on Stupidoodle/hinge-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page