Skip to main content

Dynamite Jobs Official Client

The official Python client for the Dynamite Jobs Company API — post remote jobs, manage applications end-to-end, score and triage candidates, pull funnel and source analytics, check billing, and run trial posts.

A single self-contained file. Zero runtime dependencies (stdlib only). Works as a CLI, a Python library, and a Model Context Protocol server. Compatible with Claude Code, Claude Desktop, Codex CLI, Gemini CLI, Cursor, GitHub Copilot, and every other Agent Skills / MCP-compatible tool.

py/dj.py    ← one file, four integration modes

About Dynamite Jobs

Dynamite Jobs is the remote-first job board for companies that hire from anywhere — running since 2017 and grown out of the Dynamite Circle founder community. Every employer on the board has been vetted as offering true work-from-anywhere roles: flexible hours, async-friendly cultures, results-based management. "Work from home" is not the same as "work from anywhere."

  • For employers — post a remote job on the board, manage applicants in the built-in ATS, repromote stalled listings, and pull analytics on where your best candidates are coming from. Need the hiring done for you? Our sister agency Remote First Recruiting runs the full search.
  • For job seekers — browse vetted remote jobs, set up job alerts, and apply with a free candidate profile.
  • For developers and AI agents — this client. Read your company's data, post jobs, score and respond to applicants programmatically, and wire DJ into Claude / Codex / Cursor as a first-class MCP server.

Install

pip install dynamitejobs

3-command quickstart

pip install dynamitejobs
python3 -m dynamitejobs setup --api-key dj_<companyID>_<random>
python3 -m dynamitejobs self-test

Get your API key from the DJ dashboard: Settings → API Access → Create new key.

CLI

# Reads
dj company                            # your company profile
dj jobs --status=published            # list your published jobs
dj applications <jobID>               # applications to one job
dj analytics-funnel --from=2026-04-01 --to=2026-05-01
dj billing                            # card on file, plan tier, recent charges
dj limits                             # rate limit caps + usage

# Writes
dj post-job '{"title": "Senior Backend Engineer", "description": "..."}'
dj publish-job <jobID>                # charges card on file
dj update-application <appID> --job-id=<jid> --status=goodFit --rating=4
dj trial-post '{"title": "..."}'      # 1 per company, awaits admin approval

Python library

from dynamitejobs import DJ

dj = DJ()  # reads ~/.env.dj
print(dj.company())

for j in dj.jobs(status="published")["jobs"]:
    print(j["id"], j.get("title"))

# Walk applications for one job and mark good fits
apps = dj.applications("job_abc123")
for a in apps["applications"]:
    if a.get("score", 0) > 0.8:
        dj.update_application(a["id"], job_id="job_abc123", status="goodFit", rating=4)

MCP server (Claude / Codex / Cursor / Gemini)

pip install "dynamitejobs[mcp]"
python3 -m dynamitejobs --mcp

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "dj": {
      "command": "python3",
      "args": ["-m", "dynamitejobs", "--mcp"],
      "env": { "DJ_API_KEY": "dj_..." }
    }
  }
}

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json — same shape as above.

Codex CLI

Symlink py/SKILL.md into ~/.codex/skills/dj/SKILL.md — Codex auto-discovers it.

Cursor

Settings → MCP → Add server. Command: python3, args: -m dynamitejobs --mcp.

GitHub Copilot

Add a paragraph to your repo's .github/copilot-instructions.md:

When asked about Dynamite Jobs data, call the dj CLI via shell. Setup once with python3 -m dynamitejobs setup --api-key ....

Gemini CLI

Add to ~/.gemini/settings.json under mcpServers.

Rate limits

Tier Per minute Per day Eligibility
trial 5 100 Only trial post used
standard 30 1,500 ≥1 paid job in last 365d
business-pro 120 10,000 Business Pro subscriber
partner 300 30,000 Manually granted

Every response carries X-RateLimit-* headers. Use dj limits to inspect.

Output formats

CLI output is JSON by default (pipe to jq):

dj jobs --status=published | jq '.jobs[].title'

Add --format=raw if you want the body printed without JSON encoding (only useful for endpoints that return non-JSON, like /openapi.json proxy).

Errors

Every error response has error (slug) and message (human). Library raises DJError with status, body, and url.

from dynamitejobs import DJ, DJError
try:
    DJ().publish_job("job_xyz")
except DJError as e:
    if e.status == 402 and e.body.get("error") == "no_stripe_customer":
        print("Add a card on file in the dashboard first.")

Versioning

The client prints a stderr warning when the server is on a newer major/minor version. Upgrade with pip install --upgrade dynamitejobs.

License

MIT.

Metadata

Release files for dynamitejobs 1.2.12

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

Source distribution (sdist)

Source distribution for dynamitejobs 1.2.12
File Size Uploaded Provenance Actions
dynamitejobs-1.2.12.tar.gz 32.8 kB With provenance Details for dynamitejobs-1.2.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for dynamitejobs 1.2.12
File Interpreter ABI Platform Actions
dynamitejobs-1.2.12-py3-none-any.whl Python 3 none any Details for dynamitejobs-1.2.12-py3-none-any.whl

Total release size: 54.3 kB

Release files / dynamitejobs-1.2.12.tar.gz

Download URL dynamitejobs-1.2.12.tar.gz
Size 32.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b2752718e4557e07642d78a0f436af35667491d3cb2d5f0e7f9ed38cf25122c7
BLAKE2b-256 checksum
How to use checksums
dcaf2ba88e0a8be1c5ce504f4d975993d6768c5cfecfbb103b638f17298250f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / dynamitejobs-1.2.12-py3-none-any.whl

Download URL dynamitejobs-1.2.12-py3-none-any.whl
Size 21.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3f1fb775a07784357e56699f1226b0a99674696420e2412d62c2c8e5ae5b6d98
BLAKE2b-256 checksum
How to use checksums
38d292e9c89ca3806c6e92538b6202a33b3f41b3f47663e398910b005a69571a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Security for dynamitejobs 1.2.12

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for dynamitejobs-1.2.12.tar.gz

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 Oct 7, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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