Skip to main content
POST
/
api
/
auto-apply
/
profiles
Create a profile
curl --request POST \
  --url https://connect.jobo.world/api/auto-apply/profiles \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <api-key>' \
  --data '
{
  "name": "Default",
  "contact": {
    "first_name": "Ada",
    "last_name": "Lovelace",
    "preferred_name": null,
    "email": "ada@example.com",
    "phone": "+1 415 555 0100",
    "date_of_birth": "1990-04-12"
  },
  "location": {
    "address_line1": "1 Analytical Engine Way",
    "city": "Austin",
    "state": "TX",
    "postal_code": "78701",
    "country": "United States"
  },
  "links": {
    "linkedin": "https://www.linkedin.com/in/ada-lovelace",
    "github": "https://github.com/adalovelace",
    "portfolio": null,
    "website": "https://adalovelace.dev"
  },
  "work_experience": [
    {
      "company": "Analytical Engines Ltd",
      "title": "Senior Backend Engineer",
      "location": "London, UK",
      "start_date": "2021-03",
      "end_date": "2023-01",
      "is_current": false,
      "description": "Led the payments platform team; built a Go/Kubernetes event pipeline handling 2B events/day."
    }
  ],
  "education": [
    {
      "school": "University of London",
      "degree": "BSc",
      "field_of_study": "Mathematics",
      "start_date": "2016",
      "end_date": "2020",
      "gpa": "3.8/4.0"
    }
  ],
  "eligibility": {
    "work_authorized_countries": [
      "United States"
    ],
    "requires_sponsorship": false
  },
  "preferences": {
    "salary_expectation": {
      "amount": 120000,
      "currency": "USD",
      "period": "year"
    },
    "earliest_start_date": "2026-08-01",
    "willing_to_relocate": true,
    "remote_preference": "remote",
    "preferred_locations": [
      "Austin, TX"
    ]
  },
  "self_identification": {
    "gender": "female",
    "ethnicity": "prefer_not_to_say",
    "veteran_status": "not_a_veteran",
    "disability_status": "prefer_not_to_say",
    "lgbtq_status": "prefer_not_to_say"
  },
  "memories": [
    "8 years of backend engineering experience",
    "Key skills: Go, Kubernetes, PostgreSQL"
  ],
  "cover_letter_template": null
}
'
{
  "id": "8c5e6d0a-9f2b-4c1e-b7a3-2f4d5e6a7b8c",
  "name": "Default",
  "status": "ready",
  "import_error": null,
  "contact": {
    "first_name": "Ada",
    "last_name": "Lovelace",
    "preferred_name": null,
    "email": "ada@example.com",
    "phone": "+1 415 555 0100",
    "date_of_birth": "1990-04-12"
  },
  "location": {
    "address_line1": "1 Analytical Engine Way",
    "city": "Austin",
    "state": "TX",
    "postal_code": "78701",
    "country": "United States"
  },
  "links": {
    "linkedin": "https://www.linkedin.com/in/ada-lovelace",
    "github": "https://github.com/adalovelace",
    "portfolio": null,
    "website": "https://adalovelace.dev"
  },
  "work_experience": [
    {
      "company": "Analytical Engines Ltd",
      "title": "Senior Backend Engineer",
      "location": "London, UK",
      "start_date": "2021-03",
      "end_date": "2023-01",
      "is_current": false,
      "description": "Led the payments platform team; built a Go/Kubernetes event pipeline handling 2B events/day."
    }
  ],
  "education": [
    {
      "school": "University of London",
      "degree": "BSc",
      "field_of_study": "Mathematics",
      "start_date": "2016",
      "end_date": "2020",
      "gpa": "3.8/4.0"
    }
  ],
  "eligibility": {
    "work_authorized_countries": [
      "United States"
    ],
    "requires_sponsorship": false
  },
  "preferences": {
    "salary_expectation": {
      "amount": 120000,
      "currency": "USD",
      "period": "year"
    },
    "earliest_start_date": "2026-08-01",
    "willing_to_relocate": true,
    "remote_preference": "remote",
    "preferred_locations": [
      "Austin, TX"
    ]
  },
  "self_identification": {
    "gender": "female",
    "ethnicity": "prefer_not_to_say",
    "veteran_status": "not_a_veteran",
    "disability_status": "prefer_not_to_say",
    "lgbtq_status": "prefer_not_to_say"
  },
  "memories": [
    "8 years of backend engineering experience",
    "Key skills: Go, Kubernetes, PostgreSQL"
  ],
  "cover_letter_template": null,
  "resume": {
    "file_name": "ada-lovelace.pdf",
    "content_type": "application/pdf",
    "size_bytes": 182333,
    "uploaded_at": "2026-07-01T12:00:00Z",
    "download_url": "/api/auto-apply/profiles/8c5e6d0a-9f2b-4c1e-b7a3-2f4d5e6a7b8c/resume"
  },
  "created_at": "2026-07-01T12:00:00Z",
  "updated_at": "2026-07-05T09:30:00Z"
}

Authorizations

X-Api-Key
string
header
required

API key provided by Jobo

Body

application/json

Shared request body for POST /api/auto-apply/profiles and PATCH /api/auto-apply/profiles/{id}. On create, absent sections start empty. On patch, every top-level key that is present replaces that entire section; absent keys are left untouched (send an empty object/array to clear a section — except contact, which requires first_name/last_name/email whenever present).

name
string

Friendly profile label (e.g. "Default", "Tech applications"). Defaults to "Default" on create; max 100 characters.

Example:

"Default"

contact
object

Contact details. first_name, last_name, and email are required on create.

location
object

Where the applicant lives. All fields optional.

Public profile links. Each must be an absolute http(s) URL, max 500 characters.

work_experience
object[]

Work history, most recent first. Max 50 entries.

education
object[]

Education history. Max 20 entries.

eligibility
object

Work authorization — facts a resume cannot state.

preferences
object

Job preferences used to answer salary, start-date, relocation, and remote questions.

self_identification
object

Voluntary EEO self-identification. Everything here is optional — omitted or prefer_not_to_say values make the applicant decline those questions on application forms.

memories
string[]

Freeform facts about the applicant, one plain sentence each. The AI reads these as context when answering arbitrary screening questions; resume import generates them automatically. Max 100 entries of 1000 characters each.

Example:
[
"8 years of backend engineering experience",
"Key skills: Go, Kubernetes, PostgreSQL"
]
cover_letter_template
string | null

Optional cover letter template the AI personalizes per job. Max 10000 characters. On PATCH, absent leaves it untouched and "" clears it.

Example:

null

Response

Profile created. The Location header points at the new profile.

A resume-first applicant profile. The resume file is the canonical source — importing one fills contact, links, work_experience, education, and memories automatically. Explicit sections carry only what a resume cannot state (eligibility, preferences, voluntary self-identification).

id
string<uuid>

Stable profile identifier.

Example:

"8c5e6d0a-9f2b-4c1e-b7a3-2f4d5e6a7b8c"

name
string

Friendly profile label.

Example:

"Default"

status
enum<string>

Lifecycle of a profile, driven by the async resume import. ready — complete and usable for applications; importing — a resume import is building the profile, poll until it leaves this state; import_failed — the import failed, see import_error (fix with PATCH or re-import).

Available options:
ready,
importing,
import_failed
Example:

"ready"

import_error
string | null

Why the resume import failed. Only set when status is import_failed.

Example:

null

contact
object

Contact details. first_name, last_name, and email are required on create.

location
object

Where the applicant lives. All fields optional.

Public profile links. Each must be an absolute http(s) URL, max 500 characters.

work_experience
object[]

Work history, most recent first.

education
object[]

Education history.

eligibility
object

Work authorization — facts a resume cannot state.

preferences
object

Job preferences used to answer salary, start-date, relocation, and remote questions.

self_identification
object

Voluntary EEO self-identification. Everything here is optional — omitted or prefer_not_to_say values make the applicant decline those questions on application forms.

memories
string[]

Freeform facts the AI uses as context when answering screening questions. Resume import generates them automatically; you can add your own via PATCH.

Example:
[
"8 years of backend engineering experience",
"Key skills: Go, Kubernetes, PostgreSQL"
]
cover_letter_template
string | null

Optional cover letter template the AI personalizes per job.

Example:

null

resume
object | null

Resume file metadata, or null when no file has been uploaded.

created_at
string<date-time>

UTC timestamp the profile was created.

Example:

"2026-07-01T12:00:00Z"

updated_at
string<date-time>

UTC timestamp the profile was last updated.

Example:

"2026-07-05T09:30:00Z"