Update Master Profile
Replaces the authenticated user's master profile. Requires the `resume:write` scope when called with an API key. **This is a full replacement, not a patch.** `profile` is validated strictly: every property of `MasterProfileContent` must be present, and any key not in the schema is rejected. Send empty arrays for sections you have no data for. Read the profile first, modify the object you got back, and send the whole thing. Pass the `updatedAt` you last read as `expectedUpdatedAt` for optimistic concurrency; omit it only when creating the profile for the first time. The example below is a complete minimal payload that validates.
Your personal API key — vw_ followed by 64 hex characters. The same key is also accepted
as Authorization: Bearer vw_....
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/v1/profiles/master" \ -H "Content-Type: application/json" \ -d '{ "expectedUpdatedAt": "2026-04-10T10:00:00.000Z", "profile": { "templateId": "modern", "basics": { "fullName": "John Doe", "role": "Software Engineer", "headline": "Building scalable systems", "email": "[email protected]", "phone": "9876543210", "location": "India", "linkEmail": true, "linkPhone": false, "linkLocation": false }, "links": { "displayMode": "icon", "items": [] }, "summary": "Backend engineer focused on distributed systems.", "experience": [], "education": [], "projects": [], "skills": [], "languages": [], "interests": [], "awards": [], "certificates": [], "publications": [], "volunteer": [], "references": [], "achievements": [], "customSections": [], "sections": [], "customization": { "accentColor": "#2563eb", "textColor": "#111827", "mutedTextColor": "#6b7280", "pageBackgroundColor": "#ffffff", "sectionBackgroundColor": "#ffffff", "borderColor": "#e5e7eb", "sectionHeadingColor": "#111827", "fontFamily": "Inter", "sectionSpacing": 16, "pagePadding": 40, "bodyLineHeight": 1.5, "headingLineHeight": 1.2 } } }'{ "success": true, "message": "string", "data": { "id": "string", "userId": "string", "content": { "templateId": "string", "basics": { "fullName": "string", "role": "string", "headline": "string", "email": "[email protected]", "phone": "string", "location": "string", "linkEmail": true, "linkPhone": true, "linkLocation": true }, "links": { "displayMode": "icon", "items": [ { "id": "string", "type": "github", "label": "string", "url": "string" } ] }, "summary": "string", "experience": [ { "id": "string", "company": "string", "role": "string", "location": "string", "startDate": "string", "endDate": "string", "current": true, "summary": "string", "highlights": [ "string" ] } ], "education": [ { "id": "string", "school": "string", "degree": "string", "field": "string", "startDate": "string", "endDate": "string", "current": true, "summary": "string" } ], "projects": [ { "id": "string", "name": "string", "role": "string", "link": "string", "linkLabel": "Link", "showLinkAsText": true, "summary": "string", "highlights": [ "string" ], "skills": [ "string" ] } ], "skills": [ { "id": "string", "name": "string", "keywords": [ "string" ] } ], "languages": [ { "id": "string", "language": "string", "fluency": "elementary" } ], "interests": [ { "id": "string", "name": "string", "keywords": [ "string" ] } ], "awards": [ { "id": "string", "title": "string", "awarder": "string", "date": "string", "website": "string", "description": "string", "showLink": true } ], "certificates": [ { "id": "string", "title": "string", "issuer": "string", "date": "string", "website": "string", "description": "string", "showLink": true } ], "publications": [ { "id": "string", "title": "string", "publisher": "string", "date": "string", "website": "string", "description": "string", "showLink": true } ], "volunteer": [ { "id": "string", "organization": "string", "role": "string", "startDate": "string", "endDate": "string", "current": true, "location": "string", "summary": "string" } ], "references": [ { "id": "string", "name": "string", "title": "string", "organization": "string", "email": "string", "phone": "string", "relationship": "string" } ], "achievements": [ { "id": "string", "title": "string", "description": "string" } ], "customSections": [ { "id": "string", "kind": "certifications", "title": "string", "items": [ { "id": "string", "name": "string", "issuer": "string", "date": "string", "link": "string", "referenceId": "string", "description": "string", "details": [ "string" ] } ], "editableTitle": true } ], "sections": [ { "id": "basics", "label": "string", "visible": true, "order": 0 } ], "customization": { "accentColor": "string", "textColor": "string", "mutedTextColor": "string", "pageBackgroundColor": "string", "sectionBackgroundColor": "string", "borderColor": "string", "sectionHeadingColor": "string", "fontFamily": "string", "sectionSpacing": 0, "pagePadding": 0, "bodyLineHeight": 0, "headingLineHeight": 0 }, "updatedAt": "2019-08-24T14:15:22Z" }, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }}Get Master ProfileGET
Retrieves the authenticated user's master profile along with an account summary. Requires the `resume:read` scope when called with an API key. When the user has never saved a profile, this still returns `200` with a placeholder whose `id` is an empty string and whose `content` is `{}` — it does not return `404`. Cached for 1 hour and invalidated on write.
Profile Import
Import a master profile from GitHub (real OAuth) or LinkedIn (AI-parsed paste).