Developers

ApplyTOP CLI

The applytop package is a command-line interface and Node client for the ApplyTOP public API. Search jobs and access your alerts, matches, saved jobs, and CVs — including AI-powered ATS scoring, CV tailoring, and cover-letter generation — straight from your terminal or your own code.

npm install -g applytop REST API reference

Install

Install the CLI globally with npm. It is plain JavaScript (ESM), needs Node ≥ 18, and is zero-config to get started.

bash
npm install -g applytop

Or run it without installing, using npx:

bash
npx applytop jobs:search -q engineer

Pro requirement

Pro feature. The CLI and API require an active Pro subscription. Free accounts can't create keys, and calls from a non-Pro account return 403 pro_required.

You need an API key to use the CLI. Keys are self-serve on your API Keys page and look like at_live_…. See the REST API docs for getting a key.

Authenticate

Log in once and your key is stored at ~/.applytop/credentials.json. auth:login prompts for your key, validates it, and saves it:

bash
applytop auth:login                        # prompts for your key, validates it, saves it
applytop auth:login --api-key at_live_xxx
applytop auth:status                       # who am I?
applytop auth:logout

Or set an environment variable instead of logging in:

bash
export APPLYTOP_API_KEY=at_live_xxx

Or pass --api-key per command.

Precedence: the --api-key flag wins, then the APPLYTOP_API_KEY environment variable, then the saved credentials file at ~/.applytop/credentials.json.

Usage & global options

Commands are namespaced resource:action and print JSON to stdout, so they pipe cleanly into jq:

bash
applytop jobs:search -q "react developer" --work-model remote --limit 5 | jq '.jobs[].title'
applytop account:me
applytop account:credits
applytop matches:list --min-score 60 --limit 10
applytop cvs:list
applytop cvs:tailor <jobId> --cv <cvId>        # costs 1 credit
applytop cvs:pdf <cvId> -o resume.pdf

Run applytop --help or applytop <command> --help for full details.

Global options

Flag Meaning
--api-key <key>API key (overrides env + saved file).
--api-url <url>API base URL (default https://applytop.com/api/v1).
--insecureAllow self-signed TLS certs (dev only).
--rawCompact single-line JSON.
--versionPrint the CLI version.
--helpPrint help for the CLI or a command.

Self-hosted / dev. Point the CLI at another base URL with APPLYTOP_API_URL (or --api-url), and add --insecure only for self-signed dev certs:

export APPLYTOP_API_URL=https://dev.applytop.com/api/v1
applytop --insecure account:me

Command reference

Every command and its options. Commands marked 1 credit spend one AI credit from the key owner's balance; everything else is free.

Auth

Command Description
auth:loginSave an API key (validates it). --api-key, --api-url
auth:statusShow authentication status (key source, owner, tier).
auth:logoutRemove the saved credentials.

Account

Command Description
account:meYour profile.
account:creditsYour AI-credit balance and tier.

Jobs

Command Description
jobs:searchSearch the public jobs pool. -q/--query, --country, --work-model, --type, --limit, --page
jobs:getOne pool job. --id | --slug

Alerts

Command Description
alerts:listYour job alerts. --limit, --offset, --status, --search
alerts:jobs <alertId>Matched jobs for one alert. --limit, --min-score, --search

Matches & Saved

Command Description
matches:listYour matched jobs across all alerts. --min-score, --country, --work-model, --search, --sort-by, --limit, --offset
matches:get <matchId>One matched job, full detail.
saved:listYour saved jobs. --limit, --offset, --country, --work-model, --search

CVs & AI tools

Command Description
cvs:listYour CVs (metadata).
cvs:get <cvId>One CV, full detail.
cvs:pdf <cvId>Download a CV as PDF. --template, -o/--output
cvs:ats-score <cvId>ATS score for a CV. 1 credit
cvs:tailor <jobId>CV tailored to a job. --cv, --template 1 credit
cvs:cover-letter <jobId>Cover letter for a job. --cv, --hiring-manager 1 credit

<jobId> for the tailoring commands accepts a pool job id (from jobs:search) or one of your matched job ids (from matches:list). If you omit --cv, your default CV is used.

Examples

bash
applytop jobs:search -q engineer --limit 5
applytop jobs:get --slug senior-react-engineer-abc123
applytop alerts:list --status active
applytop alerts:jobs alr_abc123 --min-score 70
applytop matches:list --min-score 60 --limit 10
applytop saved:list --work-model remote
applytop cvs:ats-score cv_abc123                 # 1 credit
applytop cvs:tailor job_abc123 --cv cv_abc123    # 1 credit
applytop cvs:cover-letter job_abc123 --hiring-manager "Alex Smith"   # 1 credit
applytop cvs:pdf cv_abc123 -o resume.pdf

Programmatic use

The same package exports a client class — use it directly from your own code:

JavaScript
import { ApplyTop, ApplyTopError } from 'applytop';

const client = new ApplyTop({ apiKey: process.env.APPLYTOP_API_KEY });

const { jobs, total } = await client.jobsSearch({ q: 'engineer', work_model: 'remote', limit: 5 });
console.log(total, jobs.map((j) => j.title));

try {
  const result = await client.cvsTailorToJob({ jobId, cvId });   // 1 credit
  console.log(result.cvId, 'balance:', result.balance);
} catch (err) {
  if (err instanceof ApplyTopError && err.code === 'insufficient_credits') {
    console.error(`Need ${err.required}, have ${err.balance}`);
  } else {
    throw err;
  }
}

Each method returns the response data:

me(), credits(), jobsSearch(), jobsGet(), alertsList(), alertsJobs(), matchesList(), matchesGet(), savedList(), cvsList(), cvsGet(), cvsAtsScore(), cvsTailorToJob(), cvsCoverLetterForJob(), and cvsDownloadPdf() (resolves to a Buffer).

Output & errors

Success prints the response payload as JSON to stdout (exit 0). Errors print { "error": { "code", "message" } } to stderr and exit 1.

stderr — error
{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough AI credits",
    "balance": 0,
    "required": 1,
    "tier": "free"
  }
}

Common error codes:

Code Meaning
auth_required / invalid_api_keyMissing / invalid key.
pro_requiredValid auth, but the account isn't Pro — the CLI is a Pro feature.
insufficient_creditsOut of AI credits (includes balance, required, tier).
premium_template_requires_proA Pro-only PDF template on a free plan.
not_foundResource missing or not yours.
rate_limitedPer-key rate limit (100/min) exceeded.

Credits

cvs:tailor, cvs:cover-letter, and cvs:ats-score each cost 1 AI credit (charged to the key owner; check with account:credits). Everything else is free.

Command Cost
cvs:tailor1 credit
cvs:cover-letter1 credit
cvs:ats-score1 credit
Everything elseFree

A failed AI generation is automatically refunded. When you don't have enough credits, the call returns insufficient_credits and you aren't charged.

Ready to script it?

Install the CLI, paste a key, and run your first command in minutes.