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.
Find the jobSlug of an open role with the jobPostings or jobPosting query.
Form fields
| Field | Type | Required | Rules |
|---|---|---|---|
resume | file | Yes | PDF, DOC, or DOCX; 5 MB or smaller. Exactly one file. |
jobSlug | string | Yes | Slug of an open role: lowercase letters, numbers, and single hyphens; up to 120 characters. |
fullName | string | Yes | 2 to 120 characters. |
email | string | Yes | A valid email address, up to 254 characters. Stored in lowercase. |
consent | string | Yes | Must be exactly "true": the applicant agrees to the privacy notice and retention period. |
phone | string | No | 6 to 25 characters: digits, spaces, +, (, ), ., and -. |
location | string | No | Up to 160 characters. |
linkedinUrl | string | No | An http or https URL, up to 500 characters. |
portfolioUrl | string | No | An http or https URL, up to 500 characters. |
coverLetter | string | No | Up to 5,000 characters. |
source | string | No | Where 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
Responses
201 Created
Errors
Errors use the standard REST error body: { "status": "ERROR", "cause": ..., "message": "Failed to process request", "statusCode": ... }.
| Status | When | Example cause |
|---|---|---|
400 Bad Request | A 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 Found | The role does not exist or is no longer accepting applications. | This role was not found or is no longer accepting applications |
409 Conflict | This email address has already applied for this role. | You've already applied for this role |
413 Payload Too Large | The resume is larger than 5 MB. | File too large |
429 Too Many Requests | More than 3 submissions per minute from the same IP. See Rate limits. | ThrottlerException: Too Many Requests |
500 Internal Server Error | The 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.