Scout's page only: read the header file for the Generate PDF form
const url = 'http://127.0.0.1:8765/api/pdf-header';const options = {method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://127.0.0.1:8765/api/pdf-header \ --header 'Content-Type: application/json' \ --data '{}'Scout’s own page only: the Generate PDF form’s values from the person’s header file. NOT for agents: it answers only Scout’s own browser page (a request carrying this server’s own Origin); any other caller gets 403 forbidden_origin and the file is not opened. An agent never needs it: it renders the PDF without a header and the person finishes it. The person may keep their name and contact details in a JSON file they own, ~/Documents/GigAI/header.json (a GigAI home other than ~/.gigai: <home>/header.json): {name, email, phone, location, github, linkedin, website, links: [{label, url}], work_authorization}, every field optional. github and linkedin take just the id (a full address is read as the id) and website a site address; values holds them the same way (the id alone, the site address), a links entry that is a GitHub or LinkedIn profile address fills that field when it is empty, values.links holds the other links, and a link named twice is there once. GigAI reads it here (to fill the Generate PDF form, where the person edits the values before generating) and in gigai scout resume pdf --out FILE, and writes it only when the person presses the form’s Save button (POST /api/pdf-header/save); it is never copied into the store, the journal, a log, a record, a suggestion, a brief, the resumes folder or a model prompt, and no other route returns it. state is filled, missing, invalid or placeholder; message is one plain sentence (what is wrong and where the file goes; never a value); warning says so when other users of the computer can read the file; values is the form’s values when filled, else null. A value that is empty or starts with REPLACE (a template placeholder) is skipped: placeholders names the skipped fields, notice is the one sentence about them, and name_note says so when the file has no name yet; state placeholder means nothing in the file is filled in. Not cached (Cache-Control: no-store).
Request Body
Section titled “Request Body”object
Example
{}Responses
Section titled “Responses”Success.
object
Example
{ "has_work_authorization": false, "message": "There is no header file at ~/Documents/GigAI/header.json.", "name_note": null, "notice": null, "placeholders": [], "schema_version": "scout-pdf-header-prefill:1", "shown": "~/Documents/GigAI/header.json", "state": "missing", "values": null, "warning": null}Forbidden_origin
object
object
Example
{ "error": { "code": "forbidden_origin", "message": "..." }}Target_unavailable
object
object
Example
{ "error": { "code": "target_unavailable", "message": "..." }}Unsupported_media_type: writes need Content-Type: application/json.
object
object
Examplegenerated
{ "error": { "allowed_keys": [ "example" ], "code": "example", "message": "example" }}Invalid_value
object
object
Example
{ "error": { "code": "invalid_value", "message": "..." }}