Nucleus OS Docs

    POST /api/careers/applications

    Submit a job application with a resume file to an open role on the Nucleus Institute careers page.

    Submits an application for an open role. This is a REST endpoint (not GraphQL) because the request carries a file. It is public: no authentication is required.

    POST https://<api-host>/api/careers/applications
    Content-Type: multipart/form-data

    Find the jobSlug of an open role with the jobPostings or jobPosting query.

    Form fields

    FieldTypeRequiredRules
    resumefileYesPDF, DOC, or DOCX; 5 MB or smaller. Exactly one file.
    jobSlugstringYesSlug of an open role: lowercase letters, numbers, and single hyphens; up to 120 characters.
    fullNamestringYes2 to 120 characters.
    emailstringYesA valid email address, up to 254 characters. Stored in lowercase.
    consentstringYesMust be exactly "true": the applicant agrees to the privacy notice and retention period.
    phonestringNo6 to 25 characters: digits, spaces, +, (, ), ., and -.
    locationstringNoUp to 160 characters.
    linkedinUrlstringNoAn http or https URL, up to 500 characters.
    portfolioUrlstringNoAn http or https URL, up to 500 characters.
    coverLetterstringNoUp to 5,000 characters.
    sourcestringNoWhere the applicant heard about the role, up to 120 characters.

    Text fields are trimmed. Optional fields sent as empty strings are treated as absent. Fields not listed here are rejected.

    Example request

    curl -X POST https://<api-host>/api/careers/applications \
      -F resume=@./jane-doe-resume.pdf \
      -F jobSlug=senior-product-designer \
      -F fullName='Jane Doe' \
      -F email=jane@example.com \
      -F consent=true \
      -F linkedinUrl=https://www.linkedin.com/in/janedoe \
      -F source='LinkedIn'

    Responses

    201 Created

    {
      "success": true,
      "message": "Application received — we'll be in touch if there's a match"
    }

    Errors

    Errors use the standard REST error body: { "status": "ERROR", "cause": ..., "message": "Failed to process request", "statusCode": ... }.

    StatusWhenExample cause
    400 Bad RequestA field is missing or invalid, the resume is missing, or the file type is not allowed. Validation failures list one message per field.["email must be a valid email address"], Resume must be a PDF, DOC or DOCX file
    404 Not FoundThe role does not exist or is no longer accepting applications.This role was not found or is no longer accepting applications
    409 ConflictThis email address has already applied for this role.You've already applied for this role
    413 Payload Too LargeThe resume is larger than 5 MB.File too large
    429 Too Many RequestsMore than 3 submissions per minute from the same IP. See Rate limits.ThrottlerException: Too Many Requests
    500 Internal Server ErrorThe application could not be stored. Retry later.-

    Data retention

    Applications and resumes are kept for a limited period after submission, as described in the Privacy Policy. That is why consent is required.

    On this page