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.