---
title: "Creating a job offer"
method: POST
path: "/jobs/{jobId}/applications/{applicationId}/job-offers"
tags: ["Job Offers"]
---

# Creating a job offer

`POST /jobs/{jobId}/applications/{applicationId}/job-offers`

## Request

- Base URL: `https://api.gupy.io/api/v1`
- URL: `https://api.gupy.io/api/v1/jobs/{jobId}/applications/{applicationId}/job-offers`
- Auth: HTTP bearer

Creates a job offer in `NOT_SENT` (draft) status for later sending.
The offer body is taken from the selected email template.

## Path parameters

- `jobId` integer, required
- `applicationId` integer, required

## Request body

- JobOfferPostRequest: Job offer to be created as draft (NOT_SENT)
  - `templateId` integer, required: Email template ID used as the offer body source
  - `salaryAmount` number, double, required: Proposed salary amount. Must be greater than zero.
  - `salaryCurrency` string, required: Salary currency symbol (e.g. R$, US-$)
  - `admissionDate` string, date, required: Planned admission date (ISO 8601). Must not be in the past.
  - `admissionType` 'employee_admission' | 'employee_readmission' | 'employee_reintegration' | 'unrelated_worker_hiring' | 'internal_transfer', required: Hiring type

## Response `201`

Job offer created successfully

- JobOfferCreated
  - `id` integer, required: Created job offer ID

## Other responses

- `400`: BadRequest / Invalid Input
- `401`: Unauthorized
- `403`: Forbidden
- `404`: NotFound / Resource not found

## Changes

- **2026-11-03** `b84c14658872`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/gupy/apis/gupy-public-api/changes/jobs/:jobId/applications/:applicationId/job-offers/post.md)

---

[API](https://skmtc.dev/gupy/apis/gupy-public-api.md) - [All operations](https://skmtc.dev/gupy/apis/gupy-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gupy/apis/gupy-public-api/revisions/b84c14658872?raw)
