TypeScript SDK
TypeScript SDK
El SDK oficial de TypeScript/JavaScript para la Laddro Career API.
Instalacion
npm install @laddro/career-sdkInicio rapido
import { Laddro } from '@laddro/career-sdk'
const client = new Laddro({
apiKey: process.env.LADDRO_API_KEY!
})
// Listar plantillas (publico, sin autenticacion necesaria)
const templates = await client.templates.list()
// Analizar un curriculo
const resume = await client.resumes.parse(
new File([buffer], 'resume.pdf', { type: 'application/pdf' })
)
// Personalizar para un empleo
const result = await client.tailor.create({
resumeId: resume.id,
positionName: 'Senior Frontend Engineer',
jobDescription: 'We are looking for...'
})Configuracion
const client = new Laddro({
apiKey: 'YOUR_API_KEY',
baseUrl: 'https://api.laddro.com', // por defecto
timeout: 30_000 // 30s por defecto
})Plantillas
// Listar todas las plantillas
const templates = await client.templates.list()
// Obtener una plantilla especifica
const template = await client.templates.get('graphite')Curriculos
// Listar curriculos
const resumes = await client.resumes.list()
// Obtener un curriculo
const resume = await client.resumes.get('res_abc123')
// Analizar desde archivo
const parsed = await client.resumes.parse(file)
// Renderizar a PDF
const pdf = await client.resumes.render('res_abc123', {
templateId: 'graphite'
})Personalizacion
// Solicitud estandar
const result = await client.tailor.create({
resumeId: 'res_abc123',
positionName: 'Senior Engineer',
jobDescription: 'We are looking for...'
})
// Streaming
const stream = client.tailor.stream({
resumeId: 'res_abc123',
positionName: 'Senior Engineer',
jobDescription: '...'
})
for await (const event of stream) {
console.log(event.type, event.section, event.content)
}Cartas de presentacion
// Generar con streaming
const stream = client.coverLetters.generate({
resumeId: 'res_abc123',
positionName: 'Senior Engineer',
jobDescription: '...',
stream: true
})
for await (const event of stream) {
process.stdout.write(event.content)
}
// Renderizar a PDF
const pdf = await client.coverLetters.render('cl_abc123', {
templateId: 'graphite'
})Exportar
import { writeFileSync } from 'fs'
const pdf = await client.export({
resumeId: 'res_abc123',
templateId: 'graphite'
})
writeFileSync('resume.pdf', Buffer.from(pdf))Configuracion (BYOK)
// Obtener modelo actual
const settings = await client.settings.get()
// Configurar modelo personalizado
await client.settings.setModel({
provider: 'anthropic',
model: 'claude-haiku-4.5',
apiKey: 'sk-ant-...'
})
// Restablecer al predeterminado
await client.settings.resetModel()Manejo de errores
import { LaddroError } from '@laddro/career-sdk'
try {
await client.resumes.get('nonexistent')
} catch (error) {
if (error instanceof LaddroError) {
console.log(error.status) // 404
console.log(error.message) // "Resume not found"
}
}