---
title: "Create job posting"
method: POST
path: "/v1/owner/jobs"
tags: ["Business Owner"]
---

# Create job posting

`POST /v1/owner/jobs`

## Request

- Base URL: `https://loppee.com`
- URL: `https://loppee.com/v1/owner/jobs`
- Auth: HTTP bearer

Create job posting. The response is scoped and validated by the runtime repository; unknown or unauthorized resources use the canonical error envelope.

## Request body

- object
  - `business_id` string, required
  - `title` string, required
  - `description` string
  - `category` string
  - `employment_type` 'full_time' | 'part_time' | 'contract' | 'temporary' | 'internship' | 'seasonal'
  - `workplace_type` 'on_site' | 'hybrid' | 'remote'
  - `street_address` string
  - `city` string
  - `state` string
  - `country` string
  - `postal_code` string
  - `category_alias` string
  - `compensation_text` string
  - `skills` string[]
  - `experience_level` string
  - `salary_min` number, nullable
  - `salary_max` number, nullable
  - `salary_currency` string
  - `salary_period` '' | 'hourly' | 'monthly' | 'yearly'
  - `benefits` string
  - `schedule` string
  - `applicant_location_requirements` string
  - `total_job_openings` integer, nullable
  - `direct_apply` boolean
  - `apply_url` string, nullable
  - `contact_email` string, nullable
  - `status` 'draft' | 'active' | 'paused' | 'filled' | 'closed'

## Response `200`

Create job posting response

- object: Created job posting.

## Other responses

- `400`: ErrorResponse
- `401`: ErrorResponse
- `403`: ErrorResponse
- `404`: ErrorResponse
- `409`: ErrorResponse
- `413`: ErrorResponse
- `429`: RateLimitError
- `default`: ErrorResponse

---

[API](https://skmtc.dev/loppee/apis/loppee-business-registry-api-for-external-agents.md) · [All operations](https://skmtc.dev/loppee/apis/loppee-business-registry-api-for-external-agents/llms.txt) · [OpenAPI document](https://skmtc.dev/loppee/apis/loppee-business-registry-api-for-external-agents/revisions/37285f7cddcd?raw)
