Add
This method creates a new Job and allows to queue its corresponding Posts.
Endpoint
POST https://ws.idibu.com/clients/api/REMOTE/V3/[client-hash]
Query parameters
| Parameter Name | Type restrictions | Required? | Notes |
|---|---|---|---|
xml_text | String | Yes | The full job posting XML (see the Query format below), URL-encoded within the parameter. |
Query format
<idibu>
<method>add</method>
<config> <!-- required; refer to https://docs.idibu.com/docs/v2/posting-api/config-section -->
<utf8_enable>yes</utf8_enable>
<lockboards>[yes|no|yes_pcp]</lockboards>
<partnerid>[string]</partnerid>
<show_durations>[yes|no]</show_durations>
<redirecturl>[string:url]</redirecturl>
<returnurl>[string:url]</returnurl>
<continue>[string]</continue>
</config>
<job> <!-- required; refer to https://docs.idibu.com/docs/v2/posting-api/job-section -->
<title>[string]</title>
<reference>[string]</reference>
<description>[string]</description>
<startdate>[string:date]</startdate>
<duration>[string]</duration>
<salarymin>[string:numeric]</salarymin>
<salarymax>[string:numeric]</salarymax>
<salaryper value="[annum|hour|day|week|month]"/>
<salaryextras>[string]</salaryextras>
<currency>[string:iso3]</currency>
<jobtype id="[1|2|4]"/>
<job_time>[1|2]</job_time>
<category id="[integer]"/>
<location id="[integer]"/>
<sublocation id="[integer]"/>
<publish>[string:date]</publish>
<app_url>[string:url]</app_url> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/dynamic-core-fields -->
<salaryOverride>[string]</salaryOverride> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/dynamic-core-fields -->
<startDateOverride>[string]</startDateOverride> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/dynamic-core-fields -->
<sender id="[integer]"/> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/sender-info -->
</job>
<posts> <!-- optional; refer to https://docs.idibu.com/docs/v2/posting-api/posts-section -->
<board id="[integer]"> <!-- Portal ID; multiple allowed; each item will generate one posting attempt -->
<duration days="[integer]" />
<extrafield name="[string]">[string]</extrafield> <!-- multiple allowed; data provided as the element's value -->
<extrafield name="[string]"> <!-- multiple allowed; for type=select, values are provided as 'item' elements below -->
<item id="[string]" /> <!-- multiple allowed if multi=true -->
</extrafield>
</board>
</posts>
</idibu>
Response format
The response does not differ in any way from the Repost and Clone methods, and will therefore not clearly indicate the method used - this piece of information must be handled on the Partner's side.
<idibu>
<job status="[added|delayed|failed]" id="[integer]" postingid="[integer]">
<!-- "status" - 'added' indicates successful Direct Posting; 'delayed' means a PCP was generated; 'failed' signals a fatal error that prevented the posting -->
<!-- "id" - Job ID; make sure to save and store this, as it's used for all other methods, as well as the https://docs.idibu.com/docs/v2/webservices/job-management -->
<!-- "postingid" - ID of the generated PCP - for idibu's internal debugging purposes only -->
<posts> <!-- only for Direct Postings -->
<posts status="[pending|failed]" boardid="[integer]" queueid="[integer]" type="add" publish="[string:date]" duration="[integer]" /> <!-- one for each 'board' element from the jobposting XML -->
<!-- "status" - 'pending' means the Post was queued successfully; 'failed' indicates the Post was not created -->
<!-- "boardid" - ID of the Portal to which the Post has been created -->
<!-- "queueid" - ID of the Post while it's in the Posting Queue; can be used to cancel the posting - see https://docs.idibu.com/docs/v2/posting-api/cancel -->
<!-- "type" - always 'add' for this method -->
<!-- "publish" - the earliest time when the system will attempt to send the Post (YYYY-MM-DD HH:mm); delays may occur -->
<!-- "duration" - how many days before the Post expires; refer to https://docs.idibu.com/docs/v2/posting-api/posts-section#duration -->
</posts>
<postcompletionurl>[string:url]</postcompletionurl> <!-- only if no Direct Posting succeeded; link to the generated PCP to which the user should be redirected to complete the posting process; refer to https://docs.idibu.com/docs/v2/posting-api/pcp -->
</job>
<log>
<errors> <!-- if errors are present, the request will either fail or Direct Posting will not succeed and PCP will be generated instead -->
<error field="[string]" type="[string:enum]" boardid="[integer]" required="[yes|no]">[string]</error> <!-- an error message that refers to a specific Extra Field -->
</errors>
<!-- "field" - name of the Extra Field to which the error pertains -->
<!-- "type" - type of the field - refer to https://docs.idibu.com/docs/v2/posting-api/portal-information#extra-fields -->
<!-- "boardid" - Portal ID to which the Extra Field belongs -->
<!-- "required" - whether the field is mandatory or optional -->
<error>[string]</error> <!-- a general error message relating to the request format, account setup, or core posting data -->
</errors>
<warnings> <!-- warnings are only informational and will not affect the request itself -->
<warning field="[string]" type="[string:enum]" boardid="[integer]" required="[yes|no]">[string]</warning> <!-- a warning message that refers to a specific Extra Field -->
<!-- "field" - name of the Extra Field to which the warning pertains -->
<!-- "type" - type of the field - refer to https://docs.idibu.com/docs/v2/posting-api/portal-information#extra-fields -->
<!-- "boardid" - Portal ID to which the Extra Field belongs -->
<!-- "required" - whether the field is mandatory or optional -->
<warning>[string]</warning> <!-- a general warning message relating to the request format, account setup, or core posting data -->
</warnings>
</log>
</idibu>
Examples - Direct Posting
In order to perform a Direct Posting, the lockboards parameter of the XML's Config section must be set to yes and all required data needs to be correctly provided in the Posts section - otherwise, a Post Completion Page will be generated, meaning that a Job has been created, but no Posts will be created until the PCP is accessed and manually completed.
The example is for Portal ID 1234 - idibu Test Portal.
Example request
<?xml version="1.0" encoding="UTF-8"?>
<idibu>
<method>add</method>
<config>
<utf8_enable>yes</utf8_enable>
<lockboards>yes</lockboards>
</config>
<job>
<title><![CDATA[Job Title]]></title>
<reference><![CDATA[WH6-QRD]]></reference>
<description><![CDATA[<strong>This is a test job.</strong><br/><em>Please ignore and do not apply</em>]]></description>
<startdate>2025-07-01</startdate>
<duration>1 month</duration>
<salarymin>12.34</salarymin>
<salarymax>56.78</salarymax>
<salaryper value="hour"/>
<salaryextras><![CDATA[Job benefits]]></salaryextras>
<currency>USD</currency>
<jobtype id="1"/>
<job_time>2</job_time>
<category id="31"/>
<location id="GB"/>
<sublocation id="1024195"/>
<publish>2025-06-15</publish>
<app_url><![CDATA[https://www.idibu.com]]></app_url>
<salaryOverride><![CDATA[Textual salary override]]></salaryOverride>
<startDateOverride><![CDATA[Textual start date override]]></startDateOverride>
<sender id="56789"/>
<posts>
<board id="1234">
<duration days="7" />
<extrafield name="idibutest_text"><![CDATA[Text field value]]></extrafield>
<extrafield name="idibutest_area">
<![CDATA[Text area value.
Newlines allowed.
HTML not supported.]]>
</extrafield>
<extrafield name="idibutest_select">
<item id="3" />
</extrafield>
<extrafield name="idibutest_multi">
<item id="one" />
<item id="three" />
<item id="five" />
</extrafield>
<extrafield name="idibutest_double" parent="p2">
<item id="c21" />
</extrafield>
<extrafield name="idibutest_dmulti" parent="pm3">
<item id="cm31" />
<item id="cm32" />
<item id="cm33" />
</extrafield>
</board>
</posts>
</job>
</idibu>
Example successful response
<?xml version="1.0" encoding="UTF-8" ?>
<idibu>
<job status="added" id="12345">
<posts>
<posts status="pending" boardid="1234" queueid="6543210" type="add" publish="2025-06-15 00:01" duration="7" />
</posts>
</job>
<log />
</idibu>
Examples - Post Completion Page
To make sure the Post Completion Page is always generated, the lockboards parameter of the XML's Config section must be set to either no or yes_pcp (the latter will not allow the user to select Portals other than the ones specified in the XML). PCP will also generate - no matter the config - if some required data (particularly the Extra Fields) is missing.
Example request
<?xml version="1.0" encoding="UTF-8"?>
<idibu>
<method>add</method>
<config>
<utf8_enable>yes</utf8_enable>
<lockboards>no</lockboards>
<partnerid>idibu</partnerid>
<show_durations>yes</show_durations>
<redirecturl><![CDATA[https://www.idibu.com]]></redirecturl>
<returnurl><![CDATA[https://ws.idibu.com/clients/upp/index.php?hash=1a2b3c4d5e6f7g8h9i0j&senderId=56789&partnerId=idibu]]></returnurl>
<continue>9z8y7x6w5u4t3s2r1p0o</continue>
</config>
<job>
<title><![CDATA[Job Title]]></title>
<reference><![CDATA[WH6-QRD]]></reference>
<description><![CDATA[Job<br/>Description]]></description>
<startdate>2025-07-01</startdate>
<duration>1 month</duration>
<salarymin>12.34</salarymin>
<salarymax>56.78</salarymax>
<salaryper value="hour"/>
<salaryextras><![CDATA[Job benefits]]></salaryextras>
<currency>USD</currency>
<jobtype id="1"/>
<job_time>2</job_time>
<category id="31"/>
<location id="GB"/>
<sublocation id="1024195"/>
<publish>2025-06-15</publish>
<app_url><![CDATA[https://www.idibu.com]]></app_url>
<salaryOverride><![CDATA[Textual salary override]]></salaryOverride>
<startDateOverride><![CDATA[Textual start date override]]></startDateOverride>
<sender id="56789"/>
<posts/>
</job>
</idibu>
Example successful response
<?xml version="1.0" encoding="UTF-8"?>
<idibu>
<job status="delayed" id="12345" postingid="543210">
<postcompletionurl>https://adpost.idibu.com/aBcDeFgHi.html</postcompletionurl>
</job>
<log>
<warnings>
<warning>At least one BOARD tag is missing the id parameter.(tag board position 0)</warning>
<warning>No valid boards were found suitable for posting</warning>
</warnings>
</log>
</idibu>