{"openapi":"3.1.0","info":{"title":"Litos API","version":"1","description":"Litos is a job application agent for students. It recommends roles that match the student's own resume and preferences, then builds a fully tailored application for each: a resume rewritten for that posting and a cover letter, built only from the student's real experience and checked so nothing is invented. The student reviews and can edit every resume, cover letter and answer before it is sent, and nothing is submitted unless the student confirms or has turned on auto-apply. Every operation is also an MCP tool on https://api.trylitos.com/mcp (Streamable HTTP, stateless), which is the preferred way for an assistant to use Litos. Authenticate with OAuth 2.1 authorization code + PKCE; discovery documents are at /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource.","contact":{"name":"Litos support","email":"admin@trylitos.com","url":"https://trylitos.com/developers"},"termsOfService":"https://trylitos.com/terms"},"servers":[{"url":"https://api.trylitos.com"}],"tags":[{"name":"account","description":"The account and its setup state"},{"name":"profile","description":"Resume, profile facts and job preferences"},{"name":"jobs","description":"The job board"},{"name":"applications","description":"Starting, answering and sending applications"},{"name":"documents","description":"Supporting documents"},{"name":"billing","description":"Passes and billing state"}],"paths":{"/v1/get_account":{"post":{"operationId":"get_account","summary":"Get account","description":"The signed-in Litos account: email, plan tier, trial and billing dates, and the entitlement snapshot with how many applications remain this cycle. Call this first to learn what the account can do.","tags":["account"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_setup_state":{"post":{"operationId":"get_setup_state","summary":"Get setup state","description":"Where the account is in first-time setup: whether a resume is uploaded, a main resume is built, job preferences are saved, sponsorship is answered, and which automation permissions (automatic sending, verification, CAPTCHA, account creation) are on. Use it to decide what to set up before searching or applying.","tags":["account"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/set_automation_permissions":{"post":{"operationId":"set_automation_permissions","summary":"Set automation permissions","description":"Record the student's standing permissions for what Litos may do on employer sites without asking each time. Only send a field the student explicitly agreed to; each is recorded with a consent version and timestamp.","tags":["account"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"automatic_submission_enabled":{"type":"boolean","description":"Litos may press Submit on a filled application once the student has approved the packet"},"automatic_verification_enabled":{"type":"boolean","description":"Litos may read employer verification codes from the account's connected inbox"},"automatic_captcha_enabled":{"type":"boolean"},"automatic_consent_acceptance_enabled":{"type":"boolean","description":"Litos may accept an employer's privacy notice on the student's behalf"},"automatic_conduct_acceptance_enabled":{"type":"boolean"},"automatic_account_creation_enabled":{"type":"boolean","description":"Litos may create the employer portal account an application requires"}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/complete_setup":{"post":{"operationId":"complete_setup","summary":"Complete setup","description":"Mark first-time setup finished with the automation permissions the student chose. Requires the work-eligibility answers in the application profile to be saved first.","tags":["account"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"automatic_submission_enabled":{"type":"boolean","default":false},"automatic_verification_enabled":{"type":"boolean","default":false},"automatic_captcha_enabled":{"type":"boolean"},"automatic_consent_acceptance_enabled":{"type":"boolean"},"automatic_conduct_acceptance_enabled":{"type":"boolean"},"automatic_account_creation_enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/list_connected_apps":{"post":{"operationId":"list_connected_apps","summary":"List connected apps","description":"The agents and apps the student has connected to this Litos account, with the scopes each holds.","tags":["account"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_profile":{"post":{"operationId":"get_profile","summary":"Get profile","description":"The parsed resume profile: name, contact details, education, skills, target roles and the experience Litos extracted. Answers 404 until a resume has been uploaded.","tags":["profile"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/upload_resume":{"post":{"operationId":"upload_resume","summary":"Upload resume","description":"Upload the student's resume: a PDF, DOCX, PNG, JPEG or WebP file up to 10 MB (content_base64 or file_url, with file_name), or the resume pasted as plain text (resume_text, up to 30,000 characters) when there is no file. Send one of the three. Litos parses it into the profile and the record of everything they have done, which every application is built from. Re-uploading replaces the parse.","tags":["profile"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file_name":{"type":"string","minLength":1,"maxLength":200,"description":"The file name with its extension, e.g. resume.pdf. Required with content_base64 or file_url."},"content_base64":{"type":"string","minLength":1,"description":"The file bytes, base64 encoded. Either this or file_url."},"file_url":{"type":"string","format":"uri","maxLength":2000,"description":"An https URL the file can be downloaded from. Either this or content_base64."},"resume_text":{"type":"string","minLength":1,"maxLength":60000,"description":"The resume as plain text, when there is no file. Instead of content_base64 and file_url."}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/update_profile":{"post":{"operationId":"update_profile","summary":"Update profile","description":"Edit fields of the parsed resume profile. Send only the fields to change.","tags":["profile"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"full_name":{"type":"string","minLength":1,"maxLength":120},"resume_email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","maxLength":40},"school":{"type":"string","minLength":1,"maxLength":200},"degree":{"type":"string","maxLength":200},"grad_date":{"type":"string","maxLength":40,"description":"e.g. \"May 2027\""},"coursework":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":40},"objective":{"type":"string","maxLength":1200},"skills":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":100},"languages":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":30},"target_roles":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"minItems":1,"maxItems":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_recent_experience_review":{"post":{"operationId":"get_recent_experience_review","summary":"Get recent experience review","description":"After a resume upload, Litos asks the student to confirm their most recent role and optionally strengthen up to three bullets with an action, a noun, a metric and an outcome. Returns the candidates and current answers.","tags":["profile"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/save_recent_experience_review":{"post":{"operationId":"save_recent_experience_review","summary":"Save recent experience review","description":"Confirm which experience entry is the most recent role and save any strengthened bullets. Set continue_with_found true to accept the entry as found.","tags":["profile"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"selected_entry_id":{"type":"string","format":"uuid"},"answers":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","maxLength":40},"noun":{"type":"string","maxLength":180},"metric_or_scope":{"type":"string","maxLength":120},"outcome":{"type":"string","maxLength":180}},"additionalProperties":false},"maxItems":3,"default":[]},"continue_with_found":{"type":"boolean","default":false}},"required":["selected_entry_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_application_profile":{"post":{"operationId":"get_application_profile","summary":"Get application profile","description":"The structured facts employer forms ask for: address, work authorization and sponsorship, availability, GPA, race and gender questions, test scores and the like. These are filled into every application.","tags":["profile"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/update_application_profile":{"post":{"operationId":"update_application_profile","summary":"Update application profile","description":"Save application facts. Send only the fields to change; null clears one. work_authorized and needs_sponsorship are the two every application needs. Dates are YYYY-MM-DD.","tags":["profile"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","nullable":true},"address_city":{"type":"string","nullable":true},"address_state":{"type":"string","nullable":true},"address_zip":{"type":"string","nullable":true},"address_country":{"type":"string","nullable":true},"linkedin_url":{"type":"string","nullable":true},"github_url":{"type":"string","nullable":true},"portfolio_url":{"type":"string","nullable":true},"citizenship":{"type":"string","nullable":true,"description":"Every country the applicant is a citizen of, comma-separated (\"India, Canada\"). Read as the complete list for export-control and clearance questions."},"work_authorized":{"type":"boolean","nullable":true},"needs_sponsorship":{"type":"boolean","nullable":true},"availability_date":{"type":"string","nullable":true},"availability_term":{"type":"string","nullable":true},"desired_salary":{"type":"string","nullable":true},"desired_salary_currency":{"type":"string","nullable":true},"date_of_birth":{"type":"string","nullable":true},"gpa":{"type":"string","nullable":true},"gpa_scale":{"type":"string","nullable":true},"major":{"type":"string","nullable":true},"languages":{"type":"array","items":{"type":"string"},"nullable":true},"eeo_prefs":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"pronouns":{"type":"string","nullable":true},"legal_first_name":{"type":"string","nullable":true},"preferred_first_name":{"type":"string","nullable":true},"education_start_date":{"type":"string","nullable":true},"high_school_grad_date":{"type":"string","nullable":true},"has_outstanding_offers":{"type":"boolean","nullable":true},"outstanding_offer_details":{"type":"string","nullable":true},"military_service":{"type":"string","nullable":true},"restrictive_agreements":{"type":"string","nullable":true},"advanced_study_plan":{"type":"string","enum":["no","considering","committed"],"nullable":true},"attest_truthful_information":{"type":"boolean","nullable":true},"accept_privacy_notices":{"type":"boolean","nullable":true},"onsite_commitment":{"type":"string","enum":["anywhere","listed_locations","no"],"nullable":true},"onsite_locations":{"type":"array","items":{"type":"string"},"nullable":true},"relocation_willingness":{"type":"string","enum":["yes","no"],"nullable":true},"availability_window_start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"availability_window_end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"availability_cycle":{"type":"string","pattern":"^(?:Spring|Summer|Fall|Winter) (?:20)\\d{2}$","nullable":true},"standardized_test_type":{"type":"string","enum":["SAT","ACT","Both","None"],"nullable":true},"sat_score":{"type":"string","minLength":1,"nullable":true},"act_score":{"type":"string","minLength":1,"nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_job_preferences":{"post":{"operationId":"get_job_preferences","summary":"Get job preferences","description":"The saved job targeting: categories, title keywords, role types, locations, remote-only, and the start periods. These rank the job board and gate which postings can be applied to.","tags":["profile"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/set_job_preferences":{"post":{"operationId":"set_job_preferences","summary":"Set job preferences","description":"Save job targeting. Send only the fields to change; null clears one. Applications outside the saved locations are refused unless remote, so keep locations honest.","tags":["profile"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"string","enum":["software-engineering","data-ml","product","design","quant-trading","hardware","research","admin-operations","accounting","education","languages","other"]},"nullable":true},"titles":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":200,"nullable":true},"role_types":{"type":"array","items":{"type":"string"},"nullable":true,"description":"e.g. internship, new-grad, full-time"},"locations":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100},"maxItems":200,"nullable":true},"remote_only":{"type":"boolean"},"primary_period":{"type":"string","pattern":"^(immediately|(?:spring|summer|fall|winter)-20\\d{2})$","nullable":true},"backup_period":{"type":"string","pattern":"^(immediately|(?:spring|summer|fall|winter)-20\\d{2})$","nullable":true}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_main_resume":{"post":{"operationId":"get_main_resume","summary":"Get main resume","description":"The main resume Litos built from the upload: the structured spec every tailored resume starts from, with when it was built.","tags":["profile"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/build_main_resume":{"post":{"operationId":"build_main_resume","summary":"Build main resume","description":"Build (or rebuild) the main resume from the uploaded resume and everything the student has told Litos they have done. Takes 10 to 30 seconds and returns the finished spec, warnings and ATS verdict, or the error that stopped it.","tags":["profile"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/edit_main_resume":{"post":{"operationId":"edit_main_resume","summary":"Edit main resume","description":"Replace the main resume spec with an edited one (take the spec from get_main_resume, change it, send it back). Bullets are length-checked.","tags":["profile"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"spec":{"type":"object","additionalProperties":{},"description":"The full resume spec object"}},"required":["spec"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/search_jobs":{"post":{"operationId":"search_jobs","summary":"Search jobs","description":"Search the Litos job board: verified postings across many roles, pulled from several job boards, with an emphasis on the United States. With a resume on file the results are ranked and each job carries match_score (resume fit) and preference_score (fit to saved preferences). Use offset to page. Each job's id is what start_application takes.","tags":["jobs"],"security":[{"litos_oauth":["jobs:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","maxLength":200,"description":"Free-text search over title, company and description"},"title":{"type":"string","maxLength":200},"company":{"type":"string","maxLength":200},"location":{"type":"string","maxLength":200},"remote":{"type":"string","enum":["true","false"]},"employment_type":{"type":"string","enum":["Full-time","Part-time","Internship","Apprenticeship","Contract"]},"sponsor_only":{"type":"string","enum":["true","false"],"description":"Only employers with a visa sponsorship record"},"relax_targeting":{"type":"string","enum":["true","false"],"description":"Widen past the saved preferences one at a time (titles, then places to their country, then season, then role type, then field), stopping at the first non-empty board (on a first page with a resume, past a board whose best match is weak); the response lists what was relaxed"},"strong_only":{"type":"string","enum":["true","false"],"description":"Only strong resume matches"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20},"offset":{"type":"integer","minimum":0,"maximum":100000,"default":0}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_job":{"post":{"operationId":"get_job","summary":"Get job","description":"One posting in full: the complete description, apply URL, portal, salary, remote flag and sponsorship evidence.","tags":["jobs"],"security":[{"litos_oauth":["jobs:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid"}},"required":["job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_job_facets":{"post":{"operationId":"get_job_facets","summary":"Get job facets","description":"The companies and locations currently on the board, for narrowing a search.","tags":["jobs"],"security":[{"litos_oauth":["jobs:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sponsor_only":{"type":"string","enum":["true","false"]},"employment_type":{"type":"string","enum":["Full-time","Part-time","Internship","Apprenticeship","Contract"]},"counts":{"type":"string","enum":["true","false"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/read_job_url":{"post":{"operationId":"read_job_url","summary":"Read job URL","description":"Read a job posting from any https URL the student found elsewhere: returns the description, and the company, role and Litos job_id when it can identify them. Use it before create_application for a posting that is not on the board.","tags":["jobs"],"security":[{"litos_oauth":["jobs:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"job_url":{"type":"string","format":"uri","maxLength":2000}},"required":["job_url"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/list_applications":{"post":{"operationId":"list_applications","summary":"List applications","description":"Every application on the tracker with its tracker_state, review_state and submission_state. Each row's id is the application_id the other application tools take; packet_id is the prepared packet behind it (null until prepared). submitted_at is when a sent application was sent (null when not sent or not recorded); updated_at is only the last change to the row.","tags":["applications"],"security":[{"litos_oauth":["applications:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":200,"default":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_application_board":{"post":{"operationId":"get_application_board","summary":"Get application board","description":"The kanban view: every application as a card with its stage (saved, applied, interview, offer, rejected, withdrawn, closed) and submission status.","tags":["applications"],"security":[{"litos_oauth":["applications:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/start_application":{"post":{"operationId":"start_application","summary":"Start application","description":"Start an application to a board job: creates the tracker row and tailors the student's resume to the posting (spends one application from the plan; the same job is never charged twice). Returns application_id and packet_id. Follow with get_application to see the questions the employer asks, then send_application.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid"}},"required":["job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/prepare_application":{"post":{"operationId":"prepare_application","summary":"Prepare application from main resume","description":"Prepare a board job for sending using the main resume as-is (no per-job tailoring): Litos opens the employer portal, discovers the form, and returns the review with every question it needs answered. Faster and cheaper than start_application when the main resume already fits.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid"}},"required":["job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/create_application":{"post":{"operationId":"create_application","summary":"Create application from details","description":"Add a posting that is not on the board to the tracker by company, role and portal URL (read_job_url gives these). Then tailor_resume builds the packet for it.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"company":{"type":"string","minLength":1,"maxLength":240},"role":{"type":"string","minLength":1,"maxLength":240},"portal_url":{"type":"string","format":"uri","maxLength":2048,"description":"The employer's apply page"},"company_domain":{"type":"string","maxLength":255},"jd_text":{"type":"string","maxLength":100000,"description":"The full job description, from read_job_url"}},"required":["company","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tailor_resume":{"post":{"operationId":"tailor_resume","summary":"Tailor resume","description":"Tailor the student's resume to a job description and attach it as the packet for an application (spends one application from the plan). Pass application_id for a tracker row from create_application, or job_id for a board job. Returns the tailored spec, download URL and quality report.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"},"job_id":{"type":"string","format":"uuid"},"company":{"type":"string","minLength":1,"maxLength":200},"role":{"type":"string","minLength":1,"maxLength":200},"jd_text":{"type":"string","minLength":20,"maxLength":100000},"portal_url":{"type":"string","format":"uri","maxLength":4000},"ats_name":{"type":"string","minLength":1,"maxLength":100,"description":"e.g. greenhouse, lever, workday"},"full_name":{"type":"string","minLength":1,"maxLength":200,"description":"Defaults to the profile name"}},"required":["company","role","jd_text"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_application":{"post":{"operationId":"get_application","summary":"Get application","description":"Everything about one application: the review (its status, the employer's questions with current answers and which are unanswered), the attached resume and documents, the cover letter, and whether it is ready to send, needs the student, or has been sent.","tags":["applications"],"security":[{"litos_oauth":["applications:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"}},"required":["application_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/answer_application_questions":{"post":{"operationId":"answer_application_questions","summary":"Answer application questions","description":"Save answers to the employer's questions on an application (ids from get_application). Ask the student anything you cannot answer from the profile; never invent facts about them.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"},"answers":{"type":"array","items":{"type":"object","properties":{"question_id":{"type":"string","minLength":1,"maxLength":200,"description":"The id of a question from get_application"},"answer":{"type":"string","maxLength":20000,"description":"The answer to put in the form. Empty string clears it."}},"required":["question_id","answer"],"additionalProperties":false},"minItems":1,"maxItems":100}},"required":["application_id","answers"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/send_application":{"post":{"operationId":"send_application","summary":"Send application","description":"Fill the employer's form with the packet and, with confirm_send true, submit it. When the student's auto-apply permission is on (get_setup_state shows automatic_submission_enabled) Litos sends without a further prompt, so set confirm_send true. When it is off, Litos fills first and holds the filled form for a final approval; set confirm_send only after the student has said to send this application. Returns 202 while the run is in progress; poll get_application.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"},"confirm_send":{"type":"boolean","default":false,"description":"True when the student has approved sending this application, or when their auto-apply permission is on"},"answers":{"type":"array","items":{"type":"object","properties":{"question_id":{"type":"string","minLength":1,"maxLength":200,"description":"The id of a question from get_application"},"answer":{"type":"string","maxLength":20000,"description":"The answer to put in the form. Empty string clears it."}},"required":["question_id","answer"],"additionalProperties":false},"maxItems":100,"description":"Last-minute answers to include"},"restart":{"type":"boolean","description":"Restart a run the review reports as restartable"}},"required":["application_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/approve_filled_application":{"post":{"operationId":"approve_filled_application","summary":"Approve filled application","description":"The final press: approve a form Litos has already filled and is holding for review, so it is submitted to the employer. Call only after the student has reviewed the filled form (get_application) and said to send.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"}},"required":["application_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/audit_application_packet":{"post":{"operationId":"audit_application_packet","summary":"Audit application before sending","description":"Run the pre-send audit on a packet: verifies the resume, renders the PDF and lists the questions. Useful to surface problems before send_application.","tags":["applications"],"security":[{"litos_oauth":["applications:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"}},"required":["application_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/set_application_stage":{"post":{"operationId":"set_application_stage","summary":"Set application stage","description":"Move an application on the board: saved, applied, interview, offer, rejected, withdrawn or closed.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"},"stage":{"type":"string","enum":["saved","applied","interview","offer","rejected","withdrawn","closed"]}},"required":["application_id","stage"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/remove_application":{"post":{"operationId":"remove_application","summary":"Remove application","description":"Remove an application from the tracker. Refused once a send is in flight or complete.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"}},"required":["application_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_cover_letter":{"post":{"operationId":"get_cover_letter","summary":"Get cover letter","description":"The cover letter attached to an application, with its download URL.","tags":["applications"],"security":[{"litos_oauth":["applications:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"}},"required":["application_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/generate_cover_letter":{"post":{"operationId":"generate_cover_letter","summary":"Generate cover letter","description":"Write a cover letter for an application from the tailored resume and the job description. Free for a job that already spent its application.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"},"jd_text":{"type":"string","minLength":1,"maxLength":200000}},"required":["application_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/update_cover_letter":{"post":{"operationId":"update_cover_letter","summary":"Update cover letter","description":"Replace the cover letter text with the student's edits.","tags":["applications"],"security":[{"litos_oauth":["applications:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"application_id":{"type":"string","format":"uuid"},"body":{"type":"string","minLength":1,"maxLength":20000}},"required":["application_id","body"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/list_documents":{"post":{"operationId":"list_documents","summary":"List documents","description":"The supporting documents on file (currently transcripts) that Litos attaches when an employer asks.","tags":["documents"],"security":[{"litos_oauth":["account:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/attach_document":{"post":{"operationId":"attach_document","summary":"Attach document","description":"Upload a PDF document (up to 4 MB) for an application and keep it on file for later ones.","tags":["documents"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file_name":{"type":"string","minLength":1,"maxLength":200,"description":"The file name with its extension, e.g. resume.pdf"},"content_base64":{"type":"string","minLength":1,"description":"The file bytes, base64 encoded. Either this or file_url."},"file_url":{"type":"string","format":"uri","maxLength":2000,"description":"An https URL the file can be downloaded from. Either this or content_base64."},"application_id":{"type":"string","format":"uuid"},"kind":{"type":"string","enum":["transcript"]},"reuse":{"type":"boolean","default":true,"description":"Keep it on file for future applications"}},"required":["file_name","application_id","kind"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/delete_document":{"post":{"operationId":"delete_document","summary":"Delete document","description":"Delete a supporting document from the account so it is no longer attached to future applications. Ask before deleting.","tags":["documents"],"security":[{"litos_oauth":["account:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"document_id":{"type":"string","format":"uuid"}},"required":["document_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/list_passes":{"post":{"operationId":"list_passes","summary":"List passes","description":"The Litos+ passes that can be bought here, in USD: one week (50 applications), one month (200) or three months (600). A pass is paid once and does not renew; buy another when it ends.","tags":["billing"],"security":[{"litos_oauth":["billing:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/get_billing_state":{"post":{"operationId":"get_billing_state","summary":"Get billing state","description":"The account's entitlement snapshot: access class (trial, paid, free), the active pass or subscription with its end date, and applications used against the limit this cycle.","tags":["billing"],"security":[{"litos_oauth":["billing:read"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/purchase_pass":{"post":{"operationId":"purchase_pass","summary":"Purchase pass","description":"Buy a Litos+ pass with a payment the student approved in this conversation: the payment method or card token (pm_... or tok_...) of a one-time Stripe Link card, or a Stripe shared payment token (spt_...) where the seller account supports it. Charges the exact pass price once and grants access immediately; a pass bought while one is active starts when the current one ends. Retry with the same idempotency_key after a timeout; it never charges twice.","tags":["billing"],"security":[{"litos_oauth":["billing:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan_id":{"type":"string","enum":["litos_plus_week","litos_plus_month","litos_plus_quarter"]},"idempotency_key":{"type":"string","format":"uuid","description":"A UUID chosen once per purchase attempt"},"payment":{"type":"object","properties":{"provider":{"type":"string","enum":["stripe"],"default":"stripe"},"token":{"type":"string","minLength":4,"maxLength":200,"description":"spt_... shared payment token, or tok_... card token"},"payment_method":{"type":"string","minLength":4,"maxLength":200,"description":"pm_... payment method"}},"additionalProperties":false}},"required":["plan_id","idempotency_key","payment"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/create_checkout_link":{"post":{"operationId":"create_checkout_link","summary":"Create checkout link","description":"Fallback when no in-conversation payment is available: a Stripe-hosted checkout link for the renewing Litos+ subscription (7-day free trial for a first-time buyer). Opens in a browser.","tags":["billing"],"security":[{"litos_oauth":["billing:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan_id":{"type":"string","enum":["litos_plus_week","litos_plus_month","litos_plus_quarter"]}},"required":["plan_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cancel_subscription":{"post":{"operationId":"cancel_subscription","summary":"Cancel subscription","description":"Cancel a renewing Litos+ subscription at the end of its current period. Passes do not renew and need no cancelling. Call only after the student confirms.","tags":["billing"],"security":[{"litos_oauth":["billing:write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"confirm":{"type":"boolean","enum":[true]}},"required":["confirm"],"additionalProperties":false}}}},"responses":{"200":{"description":"The operation's result. Shapes mirror the Litos dashboard routes they proxy.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"4XX":{"description":"A refusal, carrying `error` (a sentence) and usually `code`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"litos_oauth":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.trylitos.com/oauth/authorize","tokenUrl":"https://api.trylitos.com/oauth/token","refreshUrl":"https://api.trylitos.com/oauth/token","scopes":{"account:read":"See your account, plan and remaining applications","account:write":"Update your profile, resume, documents and job preferences","jobs:read":"Search the job board with your match scores","applications:read":"See your applications and their status","applications:write":"Start, fill, answer and send applications for you","billing:read":"See your plan and billing state","billing:write":"Buy a Litos pass with a payment you approve"}}}}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"}},"required":["error"],"additionalProperties":true}}},"x-mcp":{"endpoint":"https://api.trylitos.com/mcp","transport":"streamable-http","scopes_supported":["account:read","account:write","jobs:read","applications:read","applications:write","billing:read","billing:write"]}}