1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3382],{72188:function(e,s,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/developers",function(){return t(95536)}])},26295:function(e,s,t){"use strict";t.d(s,{gE:function(){return n},yU:function(){return r}});var a=t(34155);let r=[{slug:"google",name:"Google",careersUrl:"https://careers.google.com/",industry:"Big Tech"},{slug:"meta",name:"Meta",careersUrl:"https://www.metacareers.com/",industry:"Big Tech"},{slug:"amazon",name:"Amazon",careersUrl:"https://www.amazon.jobs/",industry:"Big Tech"},{slug:"microsoft",name:"Microsoft",careersUrl:"https://careers.microsoft.com/",industry:"Big Tech"},{slug:"apple",name:"Apple",careersUrl:"https://www.apple.com/careers/",industry:"Big Tech"},{slug:"netflix",name:"Netflix",careersUrl:"https://jobs.netflix.com/",industry:"Streaming"},{slug:"stripe",name:"Stripe",careersUrl:"https://stripe.com/jobs",industry:"Fintech"},{slug:"airbnb",name:"Airbnb",careersUrl:"https://careers.airbnb.com/",industry:"Travel Tech"},{slug:"uber",name:"Uber",careersUrl:"https://www.uber.com/global/en/careers/",industry:"Mobility"},{slug:"doordash",name:"DoorDash",careersUrl:"https://careers.doordash.com/",industry:"Food Tech"},{slug:"shopify",name:"Shopify",careersUrl:"https://www.shopify.com/careers",industry:"E-commerce"},{slug:"salesforce",name:"Salesforce",careersUrl:"https://www.salesforce.com/company/careers/",industry:"SaaS"},{slug:"atlassian",name:"Atlassian",careersUrl:"https://www.atlassian.com/company/careers",industry:"SaaS"},{slug:"databricks",name:"Databricks",careersUrl:"https://www.databricks.com/company/careers",industry:"Data"},{slug:"snowflake",name:"Snowflake",careersUrl:"https://careers.snowflake.com/",industry:"Data"},{slug:"openai",name:"OpenAI",careersUrl:"https://openai.com/careers",industry:"AI"},{slug:"anthropic",name:"Anthropic",careersUrl:"https://www.anthropic.com/careers",industry:"AI"},{slug:"nvidia",name:"NVIDIA",careersUrl:"https://www.nvidia.com/en-us/about-nvidia/careers/",industry:"Hardware/AI"},{slug:"tesla",name:"Tesla",careersUrl:"https://www.tesla.com/careers",industry:"Auto/Energy"},{slug:"spotify",name:"Spotify",careersUrl:"https://www.lifeatspotify.com/",industry:"Streaming"}];function n(){return(a.env.NEXT_PUBLIC_SITE_URL||a.env.NEXTAUTH_URL||"https://trueresume.ai").replace(/\/$/,"")}},32225:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(63759).Z)("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]])},18289:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(63759).Z)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},53616:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(63759).Z)("Key",[["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["path",{d:"m15.5 7.5 3 3L22 7l-3-3",key:"1rn1fs"}]])},805:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(63759).Z)("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]])},46611:function(e,s,t){"use strict";t.d(s,{Z:function(){return a}});let a=(0,t(63759).Z)("Zap",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]])},95536:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return k}});var a=t(85893),r=t(67294),n=t(9008),i=t.n(n),l=t(41664),o=t.n(l),c=t(11163),d=t(85412),m=t(67694),p=t(78865),x=t(18289),u=t(32225),h=t(53616),g=t(46611),b=t(805),f=t(73416);let y=(0,t(63759).Z)("Book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20",key:"t4utmx"}]]);var w=t(71707),j=t(26295);function N(e){let{code:s,language:t="bash",testId:n}=e,[i,l]=(0,r.useState)(!1),o=async()=>{try{await navigator.clipboard.writeText(s),l(!0),setTimeout(()=>l(!1),1800)}catch(e){}};return(0,a.jsxs)("div",{className:"relative group my-3","data-testid":n,children:[(0,a.jsx)("pre",{className:"rounded-lg p-4 overflow-x-auto text-sm bg-slate-900 text-slate-100 ring-1 ring-slate-800",children:(0,a.jsx)("code",{className:"language-".concat(t),children:s})}),(0,a.jsx)("button",{onClick:o,className:"absolute top-2 right-2 p-1.5 rounded-md bg-slate-800 hover:bg-slate-700 text-slate-300 opacity-0 group-hover:opacity-100 transition","aria-label":"Copy code","data-testid":n?"".concat(n,"-copy"):void 0,children:i?(0,a.jsx)(p.Z,{className:"w-4 h-4 text-emerald-400"}):(0,a.jsx)(x.Z,{className:"w-4 h-4"})})]})}function k(){let{theme:e}=(0,m.F)(),s=(0,c.useRouter)(),t="dark"===e,r=window.location.origin,n="TrueResume Developer API â Build with Resumes & Job Data",l="Public REST API for TrueResume. Generate resumes, fetch career profiles, and bulk-tailor resumes programmatically. Bearer-token auth, scoped permissions.";return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(i(),{children:[(0,a.jsx)("title",{children:n}),(0,a.jsx)("meta",{name:"description",content:l}),(0,a.jsx)("link",{rel:"canonical",href:"".concat((0,j.gE)(),"/developers")}),(0,a.jsx)("meta",{property:"og:title",content:n}),(0,a.jsx)("meta",{property:"og:description",content:l})]}),(0,a.jsxs)("div",{className:"min-h-screen pt-14 sm:pt-16 ".concat(t?"bg-slate-950 text-slate-100":"bg-white text-slate-900"),"data-testid":"developers-page",children:[(0,a.jsx)(d.Z,{}),(0,a.jsxs)("section",{className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 pt-12 pb-8",children:[(0,a.jsxs)("div",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full text-xs font-semibold bg-brand-500/10 text-brand-500 mb-4",children:[(0,a.jsx)(u.Z,{className:"w-3.5 h-3.5"})," v1 \xb7 STABLE"]}),(0,a.jsx)("h1",{className:"text-4xl sm:text-5xl lg:text-6xl font-bold tracking-tight mb-4 font-heading",children:"TrueResume Developer API"}),(0,a.jsx)("p",{className:"text-lg sm:text-xl opacity-80 max-w-3xl",children:"REST endpoints to generate, fetch, and manage resumes programmatically. Bearer-token auth, scoped permissions, transparent rate limits."}),(0,a.jsxs)("div",{className:"mt-6 flex flex-wrap gap-3",children:[(0,a.jsxs)("button",{onClick:()=>s.push("/account/api-keys"),className:"inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-brand-500 hover:bg-brand-600 text-white font-semibold transition shadow-lg shadow-brand-500/30","data-testid":"developers-create-key-btn",children:[(0,a.jsx)(h.Z,{className:"w-4 h-4"}),"Create an API key"]}),(0,a.jsxs)("a",{href:"#quickstart",className:"inline-flex items-center gap-2 px-5 py-2.5 rounded-full font-semibold transition border ".concat(t?"border-slate-700 hover:bg-slate-800":"border-slate-300 hover:bg-slate-100"),"data-testid":"developers-quickstart-btn",children:[(0,a.jsx)(g.Z,{className:"w-4 h-4"}),"Quickstart"]})]})]}),(0,a.jsxs)("section",{id:"quickstart",className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8 scroll-mt-20",children:[(0,a.jsxs)("h2",{className:"text-2xl sm:text-3xl font-bold mb-4 flex items-center gap-2 font-heading",children:[(0,a.jsx)(b.Z,{className:"w-7 h-7 text-brand-500"})," Quickstart"]}),(0,a.jsxs)("ol",{className:"space-y-3 mb-4 list-decimal list-inside opacity-90",children:[(0,a.jsx)("li",{children:"Create an API key from your dashboard."}),(0,a.jsxs)("li",{children:["Send it as a Bearer token in the ",(0,a.jsx)("code",{className:"text-brand-500",children:"Authorization"})," header."]}),(0,a.jsx)("li",{children:"Call any v1 endpoint. Rate limit is 60 req/min by default."})]}),(0,a.jsx)(N,{testId:"developers-quickstart-curl",code:'# Verify your key\ncurl -X GET "'.concat(r,'/api/v1/me" \\\n -H "Authorization: Bearer tr_live_xxxxxxxx.YOUR_SECRET"')})]}),(0,a.jsxs)("section",{className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:[(0,a.jsxs)("h2",{className:"text-2xl sm:text-3xl font-bold mb-4 flex items-center gap-2 font-heading",children:[(0,a.jsx)(f.Z,{className:"w-7 h-7 text-brand-500"})," Authentication"]}),(0,a.jsxs)("p",{className:"opacity-80 mb-3",children:["All requests require a Bearer token. Tokens are formatted as",(0,a.jsx)("code",{className:"mx-1 px-1.5 py-0.5 rounded bg-slate-200 dark:bg-slate-800 text-sm",children:"tr_live_<keyId>.<secret>"}),". The plaintext secret is shown ",(0,a.jsx)("strong",{children:"once"})," on creation â store it in a secret manager."]}),(0,a.jsx)("p",{className:"opacity-80 mb-3",children:"Scopes limit each key's blast radius. Available scopes:"}),(0,a.jsx)("ul",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2 mb-4",children:["resumes:read","resumes:write","profile:read","profile:write","jobs:read","bulk:write","analytics:read"].map(e=>(0,a.jsx)("li",{className:"px-3 py-1.5 rounded font-mono text-sm ".concat(t?"bg-slate-900 ring-1 ring-slate-800":"bg-slate-100 ring-1 ring-slate-200"),children:e},e))})]}),(0,a.jsxs)("section",{className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:[(0,a.jsxs)("h2",{className:"text-2xl sm:text-3xl font-bold mb-4 flex items-center gap-2 font-heading",children:[(0,a.jsx)(y,{className:"w-7 h-7 text-brand-500"})," Endpoints"]}),[{id:"me",method:"GET",path:"/api/v1/me",scope:"no specific scope",desc:"Returns the authenticated principal: keyId, userId, scopes, rate limit.",example:'curl -X GET "'.concat(r,'/api/v1/me" \\\n -H "Authorization: Bearer $TR_API_KEY"')},{id:"list-resumes",method:"GET",path:"/api/v1/resumes",scope:"resumes:read",desc:"Paginated list of the user's resumes. Filter by status, paginate via cursor.",example:'curl -G "'.concat(r,'/api/v1/resumes" \\\n --data-urlencode "limit=20" \\\n --data-urlencode "status=final" \\\n -H "Authorization: Bearer $TR_API_KEY"')},{id:"get-resume",method:"GET",path:"/api/v1/resumes/{id}",scope:"resumes:read",desc:"Fetch a single resume including full content JSON.",example:'curl -X GET "'.concat(r,'/api/v1/resumes/RESUME_ID" \\\n -H "Authorization: Bearer $TR_API_KEY"')},{id:"profile",method:"GET",path:"/api/v1/profile",scope:"profile:read",desc:"Authenticated user's career profile (skills, experience, education).",example:'curl -X GET "'.concat(r,'/api/v1/profile" \\\n -H "Authorization: Bearer $TR_API_KEY"')},{id:"bulk",method:"POST",path:"/api/v1/bulk/resumes",scope:"bulk:write",desc:"Submit up to 50 (job description, options) pairs. Returns a job id.",example:'curl -X POST "'.concat(r,'/api/v1/bulk/resumes" \\\n -H "Authorization: Bearer $TR_API_KEY" \\\n -H "Content-Type: application/json" \\\n -d \'{"items":[{"jobDescription":"...","template":"ats-modern"}]}\'')},{id:"bulk-status",method:"GET",path:"/api/v1/bulk/jobs/{id}",scope:"bulk:write",desc:"Poll bulk job status. Returns progress + per-item results.",example:'curl -X GET "'.concat(r,'/api/v1/bulk/jobs/JOB_ID" \\\n -H "Authorization: Bearer $TR_API_KEY"')}].map(e=>(0,a.jsxs)("div",{id:e.id,className:"mb-6 rounded-xl p-5 ring-1 scroll-mt-20 ".concat(t?"bg-slate-900 ring-slate-800":"bg-white ring-slate-200"),"data-testid":"developers-endpoint-".concat(e.id),children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mb-2",children:[(0,a.jsx)("span",{className:"px-2 py-0.5 rounded font-mono text-xs font-bold ".concat("GET"===e.method?"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400":"bg-brand-500/10 text-brand-500"),children:e.method}),(0,a.jsx)("code",{className:"font-mono text-sm",children:e.path}),(0,a.jsxs)("span",{className:"ml-auto text-xs opacity-60",children:["scope: ",(0,a.jsx)("code",{className:"font-mono",children:e.scope})]})]}),(0,a.jsx)("p",{className:"text-sm opacity-80 mb-3",dangerouslySetInnerHTML:{__html:e.desc}}),(0,a.jsx)(N,{code:e.example,testId:"developers-".concat(e.id,"-example")})]},e.id))]}),(0,a.jsxs)("section",{className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:[(0,a.jsx)("h2",{className:"text-2xl sm:text-3xl font-bold mb-4 font-heading",children:"Rate limits"}),(0,a.jsxs)("p",{className:"opacity-80 mb-3",children:["Default: ",(0,a.jsx)("strong",{children:"60 requests / minute / key"}),". Configurable per key. Every response includes:"]}),(0,a.jsxs)("ul",{className:"space-y-1 mb-3 opacity-80 text-sm",children:[(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{className:"font-mono",children:"X-RateLimit-Limit"})," â requests per window"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{className:"font-mono",children:"X-RateLimit-Remaining"})," â remaining in current window"]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{className:"font-mono",children:"X-RateLimit-Reset"})," â epoch ms when the window resets"]}
1),(0,a.jsxs)("li",{children:[(0,a.jsx)("code",{className:"font-mono",children:"X-RateLimit-Backend"})," â ",(0,a.jsx)("code",{children:"redis"})," or ",(0,a.jsx)("code",{children:"memory"})]})]}),(0,a.jsxs)("p",{className:"opacity-80",children:["On ",(0,a.jsx)("code",{className:"font-mono",children:"429"}),", respect the ",(0,a.jsx)("code",{className:"font-mono",children:"retryAfter"})," field in the JSON body."]})]}),(0,a.jsxs)("section",{className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:[(0,a.jsx)("h2",{className:"text-2xl sm:text-3xl font-bold mb-4 font-heading",children:"OpenAPI specification"}),(0,a.jsx)("p",{className:"opacity-80 mb-3",children:"Machine-readable spec available for code generation:"}),(0,a.jsx)(N,{testId:"developers-openapi-link",code:"curl ".concat(r,"/api/v1/openapi.json")}),(0,a.jsxs)(o(),{href:"/api/v1/openapi.json",className:"inline-flex items-center gap-1 text-brand-500 hover:underline mt-2",target:"_blank",rel:"noreferrer",children:["View OpenAPI JSON ",(0,a.jsx)(w.Z,{className:"w-4 h-4"})]})]}),(0,a.jsx)("section",{className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 pb-16",children:(0,a.jsxs)("div",{className:"rounded-2xl p-8 text-center ".concat(t?"bg-gradient-to-br from-brand-900/40 to-slate-900 ring-1 ring-brand-500/20":"bg-gradient-to-br from-brand-50 to-white ring-1 ring-brand-200"),children:[(0,a.jsx)("h2",{className:"text-2xl sm:text-3xl font-bold mb-3 font-heading",children:"Ready to build?"}),(0,a.jsx)("p",{className:"opacity-80 mb-5 max-w-2xl mx-auto",children:"Generate your first key and start automating resume workflows."}),(0,a.jsxs)("button",{onClick:()=>s.push("/account/api-keys"),className:"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-brand-500 hover:bg-brand-600 text-white font-semibold transition shadow-lg shadow-brand-500/30","data-testid":"developers-bottom-cta",children:[(0,a.jsx)(h.Z,{className:"w-5 h-5"}),"Create an API key"]})]})})]})]})}}},function(e){e.O(0,[4968,1296,5412,2888,9774,179],function(){return e(e.s=72188)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.