Job examples

Replace the example IDs and URLs with your own. A successful create typically returns HTTP 202. Field rules: Job fields.

Minimal valid job

Required fields only (omit country / theme for remote, roster/roving, or TBD location).

curl -X PUT "https://api.reliefweb.int/v2/jobs/efa7a5ff-a00c-500e-bc5d-d181874dc072?appname=REPLACE-WITH-APP-NAME" \
  -H "Content-Type: application/json" \
  -H "X-RW-POST-API-KEY: YOUR-API-KEY" \
  -H "X-RW-POST-API-PROVIDER: YOUR-PROVIDER-UUID" \
  -d @job.json
{
  "url": "https://myorganization.org/job/12345",
  "uuid": "efa7a5ff-a00c-500e-bc5d-d181874dc072",
  "title": "Example Humanitarian Affairs Officer",
  "source": [1503],
  "closing_date": "2029-06-06T01:00:00+00:00",
  "body": "Role overview and key responsibilities in markdown or HTML.",
  "how_to_apply": "Apply via the careers portal linked from the job URL.",
  "job_type": [263],
  "job_experience": [260],
  "career_category": [36601]
}

Production-style job

Includes country and theme, with fuller description and application text.

{
  "url": "https://myorganization.org/job/12345",
  "uuid": "efa7a5ff-a00c-500e-bc5d-d181874dc072",
  "title": "Example Humanitarian Affairs Officer",
  "source": [1503],
  "closing_date": "2029-06-06T01:00:00+00:00",
  "body": "## Role overview\n\nCoordinate humanitarian information management and reporting for the country office.\n\n## Responsibilities\n\n- Draft situation updates and briefing notes\n- Support partners with data standards and taxonomy tagging\n- Liaise with clusters and OCHA counterparts\n\n## Requirements\n\n- Degree in a relevant field\n- Experience in humanitarian coordination or information management",
  "how_to_apply": "Submit your CV and cover letter through the careers portal at the job URL before the closing date. Incomplete applications will not be considered.",
  "country": [13],
  "job_type": [263],
  "job_experience": [260],
  "career_category": [36601],
  "theme": [4587]
}

Taxonomy ids in these examples

Field Id Meaning Look it up
source 1503 UN Office for the Coordination of Humanitarian Affairs GET /v2/sources/1503
country 13 Afghanistan GET /v2/countries/13
job_type 263 Job GET /v2/references/job-types/263
job_experience 260 5-9 years GET /v2/references/job-experience/260
career_category 36601 Logistics/Procurement GET /v2/references/career-categories/36601
theme 4587 (theme term — confirm via lookup) GET /v2/references/themes/4587

Prefix paths with https://api.reliefweb.int and add your appname. To find an id, see References, Sources, and Countries.

Country lookup example

Search countries by name or ISO3, then use the integer id in the payload (not the ISO3 string):

GET https://api.reliefweb.int/v2/countries?appname=REPLACE-WITH-APP-NAME&query[value]=afghanistan

Example response (abbreviated):

{
  "totalCount": 1,
  "count": 1,
  "data": [
    {
      "id": 13,
      "fields": {
        "name": "Afghanistan",
        "iso3": "AFG"
      }
    }
  ]
}

Take id from the response and send "country": [13]. Do not send AFG or "Afghanistan". Omit country entirely for remote, roster/roving, or TBD location.

Troubleshooting

Issue Likely cause What to do
Invalid taxonomy / unknown id Wrong integer, name/ISO3 sent instead of id, or stale id Look up the term via /v2/sources, /v2/countries, or /v2/references/... and send the integer id in an array
Missing required field Required property omitted or set to null Include every required field from Job fields; required fields cannot be cleared on PATCH
UUID / url mismatch uuid not derived from the exact url string Recompute uuid5(ReliefWeb namespace, url); see Trusted URLs and UUIDs
Trusted URL rejected url (or other URL fields) outside approved prefixes Use a URL under your trusted document prefix; request prefix updates via credentials
Invalid JSON / schema errors Malformed JSON, wrong types (string instead of array of ints), title too short, empty body Validate against the job schema; check min lengths and maxItems
how_to_apply / body rejected Control characters, leading/trailing spaces, or too short Use markdown/HTML within the allowlist; keep length ≥ 10; avoid odd whitespace

See also Responses, limits, and errors.