Skip to main content

API reference

Quickstart: Python

Use the jobbydev Python SDK to drive the API from a script, a Flask / FastAPI app, or a Jupyter notebook.

Last updated

The jobbydev Python package is a hand-written client over the v1 surface. One runtime dep (httpx), Python 3.10+. Works in scripts, Flask / FastAPI, Jupyter notebooks.

Install

pip install jobbydev

Note: the SDK ships scaffold-only today (in this repo's sdks/python/directory). It's not yet on PyPI; publish gate is the post-Tier 8 audit.

Initialize

import os
from jobbydev import JobbydevClient

with JobbydevClient(api_token=os.environ["JOBBYDEV_API_TOKEN"]) as jobby:
    events = jobby.list_live_events().data
    print(f"{len(events)} events live")

The context manager closes the underlying httpx connection pool cleanly. For long-lived processes (web servers), instantiate once at app startup and call close() at shutdown.

Join a queue

jobby.queue.join("evt_abc123")
status = jobby.queue.status().data
print(f"Position #{status['rank']}, ~{status['estimated_wait_seconds']}s wait")

Errors

from jobbydev import JobbydevError

try:
    result = jobby.matches.accept(match_id)
except JobbydevError as exc:
    if exc.code == "OFF_SESSION_CONSENT_REQUIRED":
        checkout_url = (exc.details or {}).get("checkout_url")
        # surface to the user
    if exc.status == 429:
        print(f"Retry after {exc.retry_after_seconds}s")
    raise

Webhooks

jobby.webhooks.create(
    target_url="https://my-app.example.com/jobbydev",
    events=["match.matched", "match.accepted", "match.declined"],
    description="Slack bot for new matches",
)

Auto-retry on 429

jobby = JobbydevClient(
    api_token=os.environ["JOBBYDEV_API_TOKEN"],
    retry_on_429=True,
)

Async

v0 of the SDK is sync-only. Async support (using httpx.AsyncClient) is planned but not shipped — for now, run sync calls in a worker thread or use the REST API directly with your own httpx async client.

Pandas / Jupyter ergonomics

import pandas as pd

# Read recent matches into a DataFrame
matches = jobby.request("GET", "/matches?limit=100").data
df = pd.DataFrame(matches["data"])
df.head()

Related reading