Skip to content

Keep the original or the rewrite of one line, or edit it

PUT
/api/tailored-resumes/lines
curl --request PUT \
--url http://127.0.0.1:8765/api/tailored-resumes/lines \
--header 'Content-Type: application/json' \
--data '{ "job_identity": "https://boards.greenhouse.io/acme/jobs/101", "line_id": "L3", "profile_id": "prof_1", "text": "Rebuilt the scheduling service on Python and Postgres for 4 teams.", "updated_at": "2026-09-29T10:05:00Z", "use": "custom" }'

Show the original, the rewrite, or your own text on one line of a stored tailored resume. Idempotent: choosing what is already shown changes nothing. The PDF and the markdown follow the choice; updated_at is unchanged. use custom edits a body line (a summary, skills or other line, or an entry’s bullet; never an entry heading): the line becomes kind custom, origin user, with no refs (no source is claimed for it and the no-loss check does not cover it) and edited_from holding the line it replaced, so use original or use rewritten brings that back. Local only: no model reads the text. A text that looks like your name or a contact detail (email, phone, link, address) is refused with 422 personal_info_refused: GigAI stores no name or contact details; they are typed in Scout’s Generate PDF form for one PDF. Example, change two bullets then render: PUT this route twice (line_id L3, then L4, each with use custom and text), then POST /api/tailored-resumes/pdf with the same profile_id and job_identity.

Media typeapplication/json
object
job_identity
required

The job identity.

string
line_id
required

A line id (L<n>) from the tailored resume.

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
text

With use custom only: the line’s new text, one line of at most 400 characters, without a bullet marker.

string
updated_at
required

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

string
use
required

Which version to show; custom shows text.

string
Allowed values: original rewritten custom
Example
{
"job_identity": "https://boards.greenhouse.io/acme/jobs/101",
"line_id": "L3",
"profile_id": "prof_1",
"text": "Rebuilt the scheduling service on Python and Postgres for 4 teams.",
"updated_at": "2026-09-29T10:05:00Z",
"use": "custom"
}

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, personal_info_refused

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": "..."
}
}