Currículo para Vaga
Menu

API para agentes de IA

Todas as rotas de /api/v1. A chave (Authorization: Bearer cpv_...) é opcional, menos nas rotas da conta. A especificação completa está em /api/v1/openapi.json

GET/api/v1/applications

200 The applications with a job, in board order · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/applications

Corpo application/json
  • jobId string
  • company * string
  • title * string
  • jobUrl string

200 The application, at "Quero me candidatar" · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/ats

ATS score of a resume, optionally against a job

Corpo application/json
  • resumeText * string
  • job string
  • language pt-BR | en | es | fr | de | it
Corpo multipart/form-data
  • file file
  • job string
  • language pt-BR | en | es | fr | de | it

200 The score, its categories and its checks · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/coupons/validate

Parâmetros: code (query, *) · sku (query)

200 Whether the coupon applies, and the price with it · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/device-codes

Starts the CLI's login

200 The code the person confirms on the site · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/device-codes/token

Asked every 3 seconds until the person allows the CLI

Corpo application/json
  • deviceCode * string

200 Pending, or the key – shown this once · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/events

Corpo application/json
  • event * extension_installed | extension_opened | extension_action
  • distinctId * string
  • action string
  • domain string

200 Sent to PostHog when it is configured · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/gifts/{code}

Parâmetros: code (path, *)

200 The gift: product, names, message and state · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/gifts/{code}/redeem

Redeems a gift into the key owner's account

Parâmetros: code (path, *)

200 What the gift became · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/handoffs

Corpo application/json
  • kind job | resume_text | linkedin_profile | screenshots
  • payload object

200 The code, valid for 15 minutes · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

PATCH/api/v1/handoffs/{code}

Parâmetros: code (path, *)

Corpo application/json
  • email string
  • phone string
  • city string

200 The profile with what was completed (RF-M13-009) · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/health

200 Up, with the deployed commit · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/interviews

Creates an interview preparation session and returns its page in the panel

Corpo application/json
  • job * string
  • resumeId string
  • stage screening | technical | final
  • interviewAt string

200 The session, being prepared · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/jobs

Corpo application/json
  • source extension
  • url string | null
  • text string

200 The job, ready or still being read · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/jobs/{id}

Parâmetros: id (path, *)

200 The job and its extraction · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

DELETE/api/v1/keys/self

200 The key no longer works · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/keys/self

Who the key belongs to (`cpv whoami`)

200 The key's owner · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/match

Match score, potential and improvement plan for a job

Corpo application/json
  • jobId string
  • resumeId string
  • resumeText string
Corpo multipart/form-data
  • jobId * string
  • file file

200 The match report: score, potential and plan · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/match/{id}

Parâmetros: id (path, *)

200 A match report, while it is made · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/orders

The key owner's orders, newest first (`cpv order list`)

200 The orders · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/orders

Creates an order and returns the PIX and the order page; never pays

Corpo application/json
  • sku * tailor | tailor_batch | create_resume | cover_letter | linkedin | linkedin_resume | kit | photo
  • email * string
  • name * string
  • cpf string
  • phone string
  • language pt-BR | en | es | fr | de | it
  • goal more_interviews | career_change | first_job | level_up
  • job string | string[]
  • resumeFile file
  • resumeText string
  • photoFile file
  • photoProfession string
  • coupon string
  • gift string
  • giftRecipientEmail string
  • giftRecipientName string
  • giftMessage string
  • parentOrderId string
  • options string
Corpo multipart/form-data
  • sku * tailor | tailor_batch | create_resume | cover_letter | linkedin | linkedin_resume | kit | photo
  • email * string
  • name * string
  • cpf string
  • phone string
  • language pt-BR | en | es | fr | de | it
  • goal more_interviews | career_change | first_job | level_up
  • job string | string[]
  • resumeFile file
  • resumeText string
  • photoFile file
  • photoProfession string
  • coupon string
  • gift string
  • giftRecipientEmail string
  • giftRecipientName string
  • giftMessage string
  • parentOrderId string
  • options string

200 The order, waiting for a person to pay · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/orders/{id}

The whole order: status, step, deliveries, scores and files

Parâmetros: id (path, *)

200 The order · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/orders/{id}/events

NDJSON of the order's changes until a final status or 30 minutes

Parâmetros: id (path, *)

200 application/x-ndjson: one JSON object per line, one line per change

GET/api/v1/orders/{id}/files/{fileId}

Downloads a file of the order

Parâmetros: id (path, *) · fileId (path, *)

302 To the file's signed link, good for 5 minutes · 404 not_found

POST/api/v1/orders/{id}/regenerate-photo

One more photo of a style, up to 3 per order (RF-M08-001)

Parâmetros: id (path, *)

Corpo application/json
  • style * corporativo | linkedin | startup | criativo
  • profession string

200 The photo order's view · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/orders/{id}/resend-email

Sends the delivery e-mail again (at most 3 per order)

Parâmetros: id (path, *)

200 Sent · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/orders/{id}/retailor

A retailoring of a tailored resume for a new job (R$ 3,40)

Parâmetros: id (path, *)

Corpo application/json
  • job * string
  • coupon string
  • paymentMethod pix | card

200 The retailoring order, waiting for a person to pay · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/resumes

200 The account's resumes · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

GET/api/v1/resumes/{id}

Parâmetros: id (path, *)

200 A resume · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/screening

Corpo application/json
  • jobId * string
  • resumeId * string
  • items * object[]

200 Each question with its answer or needsUserInfo · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/screening/{id}/info

Parâmetros: id (path, *)

Corpo application/json
  • value * string

200 The question answered with what the person said · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/support

Corpo application/json
  • name * string
  • email * string
  • message * string
  • orderId string

200 The ticket · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/uploads

Corpo application/json
  • purpose * resume | resume_screenshot | linkedin_file | selfie | job_screenshot | resume_photo
  • contentType * application/pdf | application/vnd.openxmlformats-officedocument.wordprocessingml.document | text/plain | image/jpeg | image/png | image/webp
  • sizeBytes * integer
  • originalName string

200 The signed URL to PUT the file to, for 120 s · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

POST/api/v1/uploads/{fileId}/confirm

Parâmetros: fileId (path, *)

200 The file, checked · 400 invalid_input · 401 unauthorized · 404 not_found · 429 rate_limited or quota_exceeded

Os erros saem sempre num objeto error, com code, message, hint e retryAfterMs, e o status HTTP do código.