On this page
CLI reference — rentahuman
skryba rentahuman commissions and monitors private human-written
rewrites through the RentAHuman API (src/rentahuman.rs; default base URL
https://rentahuman.ai/api, overridable with RENTAHUMAN_API_URL, which
must be an HTTPS base URL without credentials, query, or fragment). Both
subcommands need RENTAHUMAN_API_KEY; neither touches Brama or the
detectors. Requests carry the key in an X-API-Key header; 429 and 5xx
responses are retried up to three times honoring Retry-After.
Every request is validated locally before anything is sent — the walkthrough captures each refusal. The order lifecycle and validation bounds as a concept: humanization order.
skryba rentahuman create [OPTIONS] --turnaround-minutes <N> --price-cents <N> --idempotency-key <KEY> [INPUT]
POST one humanization to v1/humanizations. INPUT is the source text —
file path or - for stdin (default). Required flags:
| Flag | Bounds | Refusal when violated |
|---|---|---|
--turnaround-minutes <N> |
5..=10080 | turnaround minutes must be between 5 and 10080 |
--price-cents <N> |
300..=100000000 | price cents must be between 300 and 100000000 |
--idempotency-key <KEY> |
8..=128 bytes, no control characters | idempotency key must contain 8 to 128 bytes |
The idempotency key is sent as an Idempotency-Key header so a retried
command never double-posts an order. The source text must contain 1 to
100000 characters.
Optional flags:
| Flag | Default | Meaning |
|---|---|---|
--transformation <T> |
clarity |
the edit the human performs: paraphrase, tone, clarity, shorten, expand, general_rewrite |
--instructions-file <PATH> |
— | free-form instructions attached to the order |
--currency <C> |
USD |
USD or EUR |
--applicant-sample-file <PATH> |
— | AI-generated sample a share of applicants must rewrite before being considered |
--screening-percentage <N> |
5 |
share of applicants screened; 1..=25 |
--screening-maximum-words <N> |
500 |
screening sample word cap; 50..=500 |
--screening-instructions-file <PATH> |
— | screening instructions; requires --applicant-sample-file |
--language <NAME> |
— | language requirement; must be paired with --minimum-proficiency |
--minimum-proficiency <P> |
— | conversational, professional, fluent, native |
--require-resume |
off | require applicant resumes |
--output <PATH> |
stdout | write the JSON response to a file |
Pairing rules enforced before sending:
--language and --minimum-proficiency must be configured together;
--screening-instructions-file requires --applicant-sample-file.
skryba rentahuman get <HUMANIZATION_ID> [--output <PATH>]
GET v1/humanizations/<id> — one humanization owned by the API key.
The id may contain only ASCII alphanumerics, _, and -; anything else
is humanization id contains invalid characters (refused locally, so an
id can never rewrite the request path).
Output shape
Both subcommands print (or --output-write) one JSON object:
provider always "rentahuman"
operation "create" or "get"
humanization_id extracted from the response when present
status extracted from the response when present
listing_url public listing URL when present
document_url final document URL when present
recording_url work recording URL when present
response the API's own JSON, verbatim and complete
The convenience fields are best-effort extractions from several known
response layouts (e.g. /id, /data/id, /humanization/id); when the
API changes shape they are null and response still carries everything.
The desktop app's RentAHuman Status view shows response verbatim for the
same reason: the API's own JSON is the record.
Picking a worker
scripts/applicants_report.py renders the applicant list for a bounty
into a readable report: it joins two raw API responses —
GET /api/bounties/<bountyId>/applications and GET /api/humans, fetched
with the account API key — and prints per applicant identity verification,
rating, completed bounties, headline, bio, and the full cover letter.
python3 scripts/applicants_report.py applications.json humans.json
Maintained as part of the website-owned Skryba documentation corpus.