Skip to content

Put back what was cut for length, or cut again

PUT
/api/tailored-resumes/length
curl --request PUT \
--url http://127.0.0.1:8765/api/tailored-resumes/length \
--header 'Content-Type: application/json' \
--data '{ "job_identity": "https://boards.greenhouse.io/acme/jobs/101", "profile_id": "prof_1", "updated_at": "2026-09-29T10:05:00Z", "use": "restore" }'

Put back what a tailored resume left out for length, or leave it out again. A tailored resume over 2 pages leaves out whole roles, the oldest first, until it fits, and a role that ended more than 8 years ago keeps its first 3 bullets; nothing else is ever cut for length. What was left out is in result.length: {max_pages, pages, full_pages, status, cut: [{position, role, entry}], trimmed: [{heading, role, bullets, records}]} (absent when the resume fits with nothing left out). pages is the resume with the cut applied, full_pages with everything shown (null when the pages could not be measured). status is cut (roles and/or older bullets are left out), restored (you put them back; cut and trimmed then say what use cut leaves out again), over (over the limit and leaving out older roles would not fix it: no role was cut) or unmeasured (the pages could not be measured: no role was cut). use restore puts every cut role and bullet back where it was, in one step; use cut, after a restore, leaves the same things out again. Idempotent; updated_at is unchanged; the markdown and the PDF follow. Local only: no model call.

Media typeapplication/json
object
job_identity
required

The job identity.

string
profile_id

Optional (0.1.11.9: a job has one resume, and the job names it). Still taken from callers of before; “ephemeral” names a pasted resume’s.

string
updated_at
required

The updated_at of the tailored resume you read; a newer tailoring answers 409.

string
use
required

Restore puts every cut role and bullet back; cut, after a restore, leaves the same things out again.

string
Allowed values: restore cut
Example
{
"job_identity": "https://boards.greenhouse.io/acme/jobs/101",
"profile_id": "prof_1",
"updated_at": "2026-09-29T10:05:00Z",
"use": "restore"
}

Success.

Media typeapplication/json
object
schema_version
required
Allowed value: scout-tailor-response:1
key
additional properties
any
Example
{
"job": {
"job_identity": "https://boards.greenhouse.io/acme/jobs/101"
},
"markdown": "# ...",
"schema_version": "scout-tailor-response:1"
}

Forbidden / forbidden_origin: loopback peer and Host 127.0.0.1:<port> or localhost:<port> only (Origin too on writes).

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Examplegenerated
{
"error": {
"allowed_keys": [
"example"
],
"code": "example",
"message": "example"
}
}

Tailored_resume_not_found, target_unavailable

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "tailored_resume_not_found",
"message": "..."
}
}

Tailored_resume_changed

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "tailored_resume_changed",
"message": "..."
}
}

Unsupported_media_type: writes need Content-Type: application/json.

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Examplegenerated
{
"error": {
"allowed_keys": [
"example"
],
"code": "example",
"message": "example"
}
}

Invalid_value

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "invalid_value",
"message": "..."
}
}