# API Guides: Customer & Domain Modules

# "This domain can only be renewed within 28 days from its expiration." error received via API

When a renewal command is sent to a domain using API, sometimes a "***This domain can only be renewed within 28 days from its expiration. Please, set auto-renewal or try again within that timeframe***" is received.

This is because there are TLDs which does not support a renewal command, that's why we are not renewing the domain, but extending the expiration date.

TLDs that cannot be renewed are:

<figure id="bkmrk-be%C2%A0-org.al%C2%A0-org.gi%C2%A0-"><table><tbody><tr><td><span><span>**be** </span></span></td><td><span><span>**org.al** </span></span></td><td><span><span>**org.gi** </span></span></td><td><span><span>**net.om** </span></span></td><td><span><span>**ml** </span></span></td></tr><tr><td><span><span>**it** </span></span></td><td><span><span>**aq** </span></span></td><td><span><span>**gm** </span></span></td><td><span><span>**org.om** </span></span></td><td><span><span>**az** </span></span></td></tr><tr><td><span><span>**at** </span></span></td><td><span><span>**as** </span></span></td><td><span><span>**com.gp** </span></span></td><td><span><span>**at.pr**</span></span></td><td><span><span>**com.az** </span></span></td></tr><tr><td>[<span><span>**<span>co.at</span>**</span></span>](http://co.at)</td><td><span><span>**bb** </span></span></td><td><span><span>**gp** </span></span></td><td><span><span>**biz.pr** </span></span></td><td><span><span>**net.az** </span></span></td></tr><tr><td>[<span><span>**<span>or.at</span>**</span></span>](http://or.at)</td><td><span><span>**com.bb** </span></span></td><td><span><span>**net.gp** </span></span></td><td><span><span>**ch.pr**</span></span></td><td><span><span>**org.az** </span></span></td></tr><tr><td><span><span>**hk** </span></span></td><td><span><span>**net.bb** </span></span></td><td><span><span>**hm** </span></span></td><td><span><span>**com.pr** </span></span></td><td><span><span>**com.bs** </span></span></td></tr><tr><td>[<span><span>**<span>com.hk</span>**</span></span>](http://com.hk)</td><td><span><span>**org.bb** </span></span></td><td>[<span><span>**<span>com.hr</span>**</span></span>](http://com.hr)</td><td><span><span>**de.pr**</span></span></td><td><span><span>**net.bs** </span></span></td></tr><tr><td>[<span><span>**<span>net.hk</span>**</span></span>](http://net.hk)</td><td><span><span>**bi** </span></span></td><td>[<span><span>**<span>or.id</span>**</span></span>](http://or.id)</td><td><span><span>**eu.pr**</span></span></td><td><span><span>**org.bs** </span></span></td></tr><tr><td>[<span><span>**<span>org.hk</span>**</span></span>](http://org.hk)</td><td><span><span>**bm** </span></span></td><td>[<span><span>**<span>web.id</span>**</span></span>](http://web.id)</td><td><span><span>**fr.pr**</span></span></td><td><span><span>**com.by** </span></span></td></tr><tr><td>[<span><span>**<span>idv.hk</span>**</span></span>](http://idv.hk)</td><td><span><span>**com.bm** </span></span></td><td>[<span><span>**<span>co.ir</span>**</span></span>](http://co.ir)</td><td><span><span>**info.pr**</span></span></td><td><span><span>**net.by** </span></span></td></tr><tr><td><span><span>**sr** </span></span></td><td><span><span>**net.bm** </span></span></td><td><span><span>**is** </span></span></td><td><span><span>**isla.pr**</span></span></td><td>[<span><span>**<span>ac.cn</span>**</span></span>](http://ac.cn)</td></tr><tr><td><span><span>**vg** </span></span></td><td><span><span>**org.bm** </span></span></td><td><span><span>**co.je**</span></span></td><td><span><span>**it.pr**</span></span></td><td><span><span>**biz.cy** </span></span></td></tr><tr><td><span><span>**tc** </span></span></td><td><span><span>**bs** </span></span></td><td><span><span>**je** </span></span></td><td><span><span>**name.pr**</span></span></td><td><span><span>**cy** </span></span></td></tr><tr><td><span><span>**ms** </span></span></td><td><span><span>**bt** </span></span></td><td><span><span>**net.je** </span></span></td><td><span><span>**net.pr** </span></span></td><td><span><span>**net.cy** </span></span></td></tr><tr><td><span><span>**jp** </span></span></td><td><span><span>**com.bt** </span></span></td><td><span><span>**org.je** </span></span></td><td><span><span>**nl.pr**</span></span></td><td><span><span>**org.cy** </span></span></td></tr><tr><td><span><span>**ro** </span></span></td><td><span><span>**net.bt** </span></span></td><td><span><span>**jobs** </span></span></td><td><span><span>**org.pr** </span></span></td><td><span><span>**com.hn** </span></span></td></tr><tr><td><span><span>**hu** </span></span></td><td><span><span>**by** </span></span></td><td><span><span>**com.kg** </span></span></td><td><span><span>**pr** </span></span></td><td><span><span>**edu.hn** </span></span></td></tr><tr><td>[<span><span>**<span>co.hu</span>**</span></span>](http://co.hu)</td><td><span><span>**cd** </span></span></td><td><span><span>**kg** </span></span></td><td><span><span>**pro.pr** </span></span></td><td><span><span>**net.hn** </span></span></td></tr><tr><td><span><span>**ir** </span></span></td><td><span><span>**cg** </span></span></td><td><span><span>**net.kg** </span></span></td><td><span><span>**uk.pr**</span></span></td><td><span><span>**org.hn** </span></span></td></tr><tr><td><span><span>**aero** </span></span></td><td><span><span>**co.cr**</span></span></td><td><span><span>**org.kg** </span></span></td><td>[<span><span>**<span>co.rs</span>**</span></span>](http://co.rs)</td><td><span><span>**biz.mm** </span></span></td></tr><tr><td><span><span>**ba** </span></span></td><td><span><span>**cr** </span></span></td><td><span><span>**kz** </span></span></td><td><span><span>**rs** </span></span></td><td><span><span>**com.mm** </span></span></td></tr><tr><td><span><span>**bg** </span></span></td><td><span><span>**com.cu** </span></span></td><td><span><span>**net.lb** </span></span></td><td><span><span>**rw** </span></span></td><td><span><span>**org.mm** </span></span></td></tr><tr><td>[<span><span>**<span>com.ar</span>**</span></span>](http://com.ar)</td><td><span><span>**cu** </span></span></td><td><span><span>**org.lb** </span></span></td><td>[<span><span>**<span>net.sa</span>**</span></span>](http://net.sa)</td><td><span><span>**ac.mu**</span></span></td></tr><tr><td>[<span><span>**<span>com.bo</span>**</span></span>](http://com.bo)</td><td><span><span>**com.cy** </span></span></td><td><span><span>**co.ls**</span></span></td><td>[<span><span>**<span>org.sa</span>**</span></span>](http://org.sa)</td><td><span><span>**co.mu**</span></span></td></tr><tr><td><span><span>**com.pa** </span></span></td><td><span><span>**dj** </span></span></td><td><span><span>**org.ls** </span></span></td><td>[<span><span>**<span>pub.sa</span>**</span></span>](http://pub.sa)</td><td><span><span>**com.mu** </span></span></td></tr><tr><td>[<span><span>**<span>com.tr</span>**</span></span>](http://com.tr)</td><td><span><span>**com.dm** </span></span></td><td><span><span>**mc** </span></span></td><td><span><span>**com.sb** </span></span></td><td><span><span>**net.mu** </span></span></td></tr><tr><td><span><span>**com.uy** </span></span></td><td><span><span>**dm** </span></span></td><td><span><span>**mp** </span></span></td><td><span><span>**net.sb** </span></span></td><td><span><span>**or.mu**</span></span></td></tr><tr><td><span><span>**com.ve** </span></span></td><td><span><span>**net.dm** </span></span></td><td><span><span>**com.mt** </span></span></td><td><span><span>**org.sb** </span></span></td><td><span><span>**org.mu** </span></span></td></tr><tr><td>[<span><span>**<span>gen.tr</span>**</span></span>](http://gen.tr)</td><td><span><span>**org.dm** </span></span></td><td><span><span>**net.mt** </span></span></td><td><span><span>**sl** </span></span></td><td><span><span>**nom.pe** </span></span></td></tr><tr><td><span><span>**ly** </span></span></td><td><span><span>**com.do** </span></span></td><td><span><span>**org.mt** </span></span></td><td><span><span>**st** </span></span></td><td><span><span>**co.pn**</span></span></td></tr><tr><td>[<span><span>**<span>co.id</span>**</span></span>](http://co.id)</td><td><span><span>**do** </span></span></td><td><span><span>**mw** </span></span></td><td><span><span>**com.sv** </span></span></td><td><span><span>**net.pn** </span></span></td></tr><tr><td>[<span><span>**<span>co.th</span>**</span></span>](http://co.th)</td><td><span><span>**net.do** </span></span></td><td><span><span>**my** </span></span></td><td>[<span><span>**<span>in.th</span>**</span></span>](http://in.th)</td><td><span><span>**org.pn** </span></span></td></tr><tr><td>[<span><span>**<span>com.sa</span>**</span></span>](http://com.sa)</td><td><span><span>**org.do** </span></span></td><td>[<span><span>**<span>net.my</span>**</span></span>](http://net.my)</td><td><span><span>**to** </span></span></td><td><span><span>**pn** </span></span></td></tr><tr><td><span><span>**ee** </span></span></td><td><span><span>**com.ec** </span></span></td><td>[<span><span>**<span>org.my</span>**</span></span>](http://org.my)</td><td>[<span><span>**<span>bbs.tr</span>**</span></span>](http://bbs.tr)</td><td>[<span><span>**<span>com.ru</span>**</span></span>](http://com.ru)</td></tr><tr><td><span><span>**hr** </span></span></td><td><span><span>**info.ec**</span></span></td><td><span><span>**co.na**</span></span></td><td>[<span><span>**<span>biz.tr</span>**</span></span>](http://biz.tr)</td><td>[<span><span>**<span>net.ru</span>**</span></span>](http://net.ru)</td></tr><tr><td><span><span>**ua** </span></span></td><td><span><span>**biz.fj** </span></span></td><td><span><span>**com.na** </span></span></td><td>[<span><span>**<span>info.tr</span>**</span></span>](http://info.tr)</td><td>[<span><span>**<span>org.ru</span>**</span></span>](http://org.ru)</td></tr><tr><td>[<span><span>**<span>co.jp</span>**</span></span>](http://co.jp)</td><td><span><span>**com.fj** </span></span></td><td><span><span>**na** </span></span></td><td>[<span><span>**<span>name.tr</span>**</span></span>](http://name.tr)</td><td>[<span><span>**<span>pp.ru</span>**</span></span>](http://pp.ru)</td></tr><tr><td><span><span>**com.lb** </span></span></td><td><span><span>**info.fj**</span></span></td><td><span><span>**org.na** </span></span></td><td>[<span><span>**<span>tel.tr</span>**</span></span>](http://tel.tr)</td><td><span><span>**com.tj** </span></span></td></tr><tr><td>[<span><span>**<span>com.my</span>**</span></span>](http://com.my)</td><td><span><span>**name.fj**</span></span></td><td><span><span>**net.ng** </span></span></td><td>[<span><span>**<span>web.tr</span>**</span></span>](http://web.tr)</td><td><span><span>**tj** </span></span></td></tr><tr><td><span><span>**com.py** </span></span></td><td><span><span>**net.fj** </span></span></td><td><span><span>**org.ng** </span></span></td><td>[<span><span>**<span>co.tt</span>**</span></span>](http://co.tt)</td><td>[<span><span>**<span>tv.tr</span>**</span></span>](http://tv.tr)</td></tr><tr><td><span><span>**bo** </span></span></td><td><span><span>**org.fj** </span></span></td><td><span><span>**com.ni** </span></span></td><td>[<span><span>**<span>com.tt</span>**</span></span>](http://com.tt)</td><td>[<span><span>**<span>net.tw</span>**</span></span>](http://net.tw)</td></tr><tr><td><span><span>**ec** </span></span></td><td><span><span>**pro.fj** </span></span></td><td><span><span>**net.ni** </span></span></td><td>[<span><span>**<span>net.tt</span>**</span></span>](http://net.tt)</td><td>[<span><span>**<span>donetsk.ua</span>**</span></span>](http://donetsk.ua)</td></tr><tr><td><span><span>**com.ng** </span></span></td><td>[<span><span>**<span>nom.fr</span>**</span></span>](http://nom.fr)</td><td><span><span>**nom.ni** </span></span></td><td>[<span><span>**<span>org.tt</span>**</span></span>](http://org.tt)</td><td>[<span><span>**<span>in.ua</span>**</span></span>](http://in.ua)</td></tr><tr><td><span><span>**ai** </span></span></td><td>[<span><span>**<span>prd.fr</span>**</span></span>](http://prd.fr)</td><td><span><span>**org.ni** </span></span></td><td><span><span>**tt** </span></span></td><td>[<span><span>**<span>kiev.ua</span>**</span></span>](http://kiev.ua)</td></tr><tr><td><span><span>**com.ai** </span></span></td><td>[<span><span>**<span>presse.fr</span>**</span></span>](http://presse.fr)</td><td><span><span>**co.om**</span></span></td><td>[<span><span>**<span>com.ua</span>**</span></span>](http://com.ua)</td><td>[<span><span>**<span>net.ua</span>**</span></span>](http://net.ua)</td></tr><tr><td><span><span>**net.ai** </span></span></td><td><span><span>**co.gg**</span></span></td><td><span><span>**com.om** </span></span></td><td><span><span>**co.ug**</span></span></td><td>[<span><span>**<span>org.ua</span>**</span></span>](http://org.ua)</td></tr><tr><td><span><span>**off.ai** </span></span></td><td><span><span>**gg** </span></span></td><td><span><span>**ch** </span></span></td><td><span><span>**ug** </span></span></td><td><span><span>**co.uz**</span></span></td></tr><tr><td><span><span>**org.ai** </span></span></td><td><span><span>**net.gg** </span></span></td><td><span><span>**li** </span></span></td><td><span><span>**co.ve**</span></span></td><td><span><span>**com.uz** </span></span></td></tr><tr><td><span><span>**al** </span></span></td><td><span><span>**org.gg** </span></span></td><td><span><span>**lu** </span></span></td><td><span><span>**co.vi**</span></span></td><td><span><span>**uz** </span></span></td></tr><tr><td><span><span>**com.al** </span></span></td><td><span><span>**com.gi** </span></span></td><td><span><span>**de** </span></span></td><td><span><span>**vu** </span></span></td><td><span><span>**com.vi** </span></span></td></tr><tr><td><span><span>**net.al** </span></span></td><td><span><span>**gi** </span></span></td><td><span><span>**co.zw**</span></span></td><td><span><span>**uy** </span></span></td><td><span><span>**xn--80ao21a**</span></span></td></tr><tr><td><span><span>**xn--j1amh**</span></span></td><td><span><span>**ltd.gi** </span></span></td><td><span><span>**org.zw** </span></span></td><td><span><span>**ng** </span></span></td><td><span><span>**xn--90ais**</span></span></td></tr><tr><td><span><span>**xn--node** </span></span></td><td><span><span>**xn--ygbi2ammx**</span></span></td></tr></tbody></table>

</figure>  
For these domains, the renewal command will be accepted only during the **last 28 days before expiration date**. API requests that are submitted before the last 28 days will result in the "**This domain can only be renewed within 28 days from its expiration. Please, set auto-renewal or try again within that timeframe**" error.  
  
Once the renewal is received, the expiration date will be extended.

As usual, we recommend turning auto-renew to "on" for these TLDs, so you can forget to send a renewal command, as the domain will automatically be renewed at expiration time.

# 1 TLD API: Search an extension

*<span>This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods. </span>To get more information about our API in general, please use our[documentation portal](http://docs.openprovider.com/#operation/ListTlds)as your reference.*

<div id="bkmrk-before-registering-a">Before registering a domain name you need to get familiar with TLD parameters and find one that suits your requirements. The current method <span>returns a [list](https://support.openprovider.eu/hc/en-us/sections/360005841014) of extensions (TLDs) matching your search criteria. To retrieve a single or several specific extensions - use the following endpoint: **GET** [**{base\_url}**](http://docs.openprovider.com/#operation/ListProducts)/<span class="operation-api-url-path">tlds/{name}</span></span>

</div><div id="bkmrk-use-endpoint-path-be"><div>![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-vxtr4zmv.png) Use endpoint path below. Base URL is determined by both the target environment and API version.  
  
</div><div>```
<span><strong>GET</strong> <a href="http://docs.openprovider.com/#operation/ListProducts"><strong>{base_url}</strong></a>/<span class="operation-api-url-path">tlds</span></span>
```

</div></div><div id="bkmrk-request-values-%C2%A0name"><div><div id="bkmrk-request-values-%C2%A0name-1"><details><summary>REQUEST VALUES</summary>

<div><table><tbody><tr><th>###  **Name**

</th><th>###  **Type**

</th><th>###  **Values**

</th><th>###  **Description**

</th></tr><tr><td>limit</td><td> numeric</td><td><span>Default: 0, Max: 1000  
</span></td><td>The maximum number of records to be returned.</td></tr><tr><td>offset</td><td> numeric </td><td><span> Default</span>: 0</td><td><span>Indicates the starting position of the response list. Indexing starts at 0, meaning that in order to start with the 10th domain, this value should be 9.  
</span></td></tr><tr><td>order</td><td>string</td><td>Output sorting method (ASC or DESC)</td></tr><tr><td>order\_by</td><td>string </td><td>Indicates an attribute that used for ordering output records.</td></tr><tr><td>extensions</td><td>array of strings</td><td>Refer to the [list](https://support.openprovider.eu/hc/en-us/sections/360005841014) of TLDs.</td><td>Extensions you are interested in.</td></tr><tr><td>name\_pattern</td><td>string</td><td>Extension name pattern.</td></tr><tr><td>only\_names</td><td>boolean </td><td>true or false</td><td>Returns extension names only in the response</td></tr><tr><td>with\_description</td><td>boolean </td><td>true or false</td><td>Return extensions with descriptions.</td></tr><tr><td>with\_restrictions</td><td>boolean </td><td>true or false</td><td>Returns extensions with restrictions.</td></tr><tr><td>with\_usage\_count</td><td>boolean </td><td>true or false</td><td>Returns number of domains in your portfolio using specified extension.</td></tr><tr><td>with\_application\_mode</td><td>boolean </td><td>true or false</td><td><span>Returns list of supported pre-registration modes.</span></td></tr><tr><td>with\_price</td><td>boolean </td><td>true or false</td><td>Returns prices if enabled.</td></tr><tr><td>with\_level\_prices</td><td>boolean</td><td>true or false</td><td><span>Returns extension prices for each Openprovider discount tier.</span></td></tr><tr><td>is\_active</td><td>boolean</td><td>true or false</td><td>Indicates if the extension is active.</td></tr><tr><td><span>is\_new\_gtld</span></td><td>boolean</td><td>true or false</td><td>Indicates if the extension is a new GLTDs.</td></tr><tr><td><span>status</span></td><td>string</td><td>Eg: **ACT** for active</td><td>Extension status.</td></tr></tbody></table>

  
</div></details><details><summary>REQUEST EXAMPLE</summary>

<div>```
 curl -X GET \<br></br> 'https://api.openprovider.eu/v1beta/tlds?status=ACT&extensions=com' \<br></br> -H 'Authorization: Bearer 1c26def9e68dd9a********5abe264fc' \
```

</div></details><details><summary>RESPONSE EXAMPLE</summary>

<div>```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": {<br></br>"results": [<br></br>{<br></br>"name": "com",<br></br>"min_period": 1,<br></br>"max_period": 10,<br></br>"transfer_available": true,<br></br>"trade_available": false,<br></br>"renew_available": true,<br></br>"is_transfer_auth_code_required": true,<br></br>"is_trade_auth_code_required": false,<br></br>"is_auth_code_requested": false,<br></br>"is_auth_code_available": true,<br></br>"is_auth_code_changeable": true,<br></br>"is_private_whois_allowed": true,<br></br>"domicile_available": false,<br></br>"soft_quarantine_period": 40,<br></br>"quarantine_period": 0,<br></br>"dnssec_allowed": true,<br></br>"status": "ACT",<br></br>"billing_handle_enabled": true,<br></br>"reseller_handle_enabled": false,<br></br>"supported_idn_scripts": [<br></br>{<br></br>"value": "AFR",<br></br>"description": "Afrikaans"<br></br>},<br></br>{<br></br>"value": "ALB",<br></br>"description": "Albanian"<br></br>},<br></br>{<br></br>"value": "ARA",<br></br>"description": "Arabic"<br></br>},<br></br>{<br></br>"value": "ARG",<br></br>"description": "Aragonese"<br></br>},<br></br>{<br></br>"value": "ARM",<br></br>"description": "Armenian"<br></br>},<br></br>{<br></br>"value": "ASM",<br></br>"description": "Assamese"<br></br>},<br></br>{<br></br>"value": "AST",<br></br>"description": "Asturian"<br></br>},<br></br>{<br></br>"value": "AVE",<br></br>"description": "Avestan"<br></br>},<br></br>{<br></br>"value": "AWA",<br></br>"description": "Awadhi"<br></br>},<br></br>{<br></br>"value": "AZE",<br></br>"description": "Azerbaijani"<br></br>},<br></br>{<br></br>"value": "BAN",<br></br>"description": "Balinese"<br></br>},<br></br>{<br></br>"value": "BAL",<br></br>"description": "Baluchi"<br></br>},<br></br>{<br></br>"value": "BAS",<br></br>"description": "Basa"<br></br>},<br></br>{<br></br>"value": "BAK",<br></br>"description": "Bashkir"<br></br>},<br></br>{<br></br>"value": "BAQ",<br></br>"description": "Basque"<br></br>},<br></br>{<br></br>"value": "BEL",<br></br>"description": "Belarusian"<br></br>},<br></br>{<br></br>"value": "BEN",<br></br>"description": "Bengali"<br></br>},<br></br>{<br></br>"value": "BHO",<br></br>"description": "Bhojpuri"<br></br>},<br></br>{<br></br>"value": "BOS",<br></br>"description": "Bosnian"<br></br>},<br></br>{<br></br>"value": "BUL",<br></br>"description": "Bulgarian"<br></br>},<br></br>{<br></br>"value": "BUR",<br></br>"description": "Burmese"<br></br>},<br></br>{<br></br>"value": "CAR",<br></br>"description": "Carib"<br></br>},<br></br>{<br></br>"value": "CAT",<br></br>"description": "Catalan"<br></br>},<br></br>{<br></br>"value": "CHE",<br></br>"description": "Chechen"<br></br>},<br></br>{<br></br>"value": "CHI",<br></br>"description": "Chinese"<br></br>},<br></br>{<br></br>"value": "CHV",<br></br>"description": "Chuvash"<br></br>},<br></br>{<br></br>"value": "COP",<br></br>"description": "Coptic"<br></br>},<br></br>{<br></br>"value": "COS",<br></br>"description": "Corsican"<br></br>},<br></br>{<br></br>"value": "SCR",<br></br>"description": "Croatian"<br></br>},<br></br>{<br></br>"value": "CZE",<br></br>"description": "Czech"<br></br>},<br></br>{<br></br>"value": "DAN",<br></br>"description": "Danish"<br></br>},<br></br>{<br></br>"value": "DIV",<br></br>"description": "Divehi"<br></br>},<br></br>{<br></br>"value": "DOI",<br></br>"description": "Dogri"<br></br>},<br></br>{<br></br>"value": "DUT",<br></br>"description": "Dutch"<br></br>},<br></br>{<br></br>"value": "ENG",<br></br>"description": "English"<br></br>},<br></br>{<br></br>"value": "EST",<br></br>"description": "Estonian"<br></br>},<br></br>{<br></br>"value": "FAO",<br></br>"description": "Faroese"<br></br>},<br></br>{<br></br>"value": "FIJ",<br></br>"description": "Fijian"<br></br>},<br></br>{<br></br>"value": "FIN",<br></br>"description": "Finnish"<br></br>},<br></br>{<br></br>"value": "FRE",<br></br>"description": "French"<br></br>},<br></br>{<br></br>"value": "FRY",<br></br>"description": "Frisian"<br></br>},<br></br>{<br></br>"value": "GLA",<br></br>"description": "Gaelic"<br></br>},<br></br>{<br></br>"value": "GEO",<br></br>"description": "Georgian"<br></br>},<br></br>{<br></br>"value": "GER",<br></br>"description": "German"<br></br>},<br></br>{<br></br>"value": "GON",<br></br>"description": "Gondi"<br></br>},<br></br>{<br></br>"value": "GRE",<br></br>"description": "Greek"<br></br>},<br></br>{<br></br>"value": "GUJ",<br></br>"description": "Gujarati"<br></br>},<br></br>{<br></br>"value": "HEB",<br></br>"description": "Hebrew"<br></br>},<br></br>{<br></br>"value": "HIN",<br></br>"description": "Hindi"<br></br>},<br></br>{<br></br>"value": "HUN",<br></br>"description": "Hungarian"<br></br>},<br></br>{<br></br>"value": "ICE",<br></br>"description": "Icelandic"<br></br>},<br></br>{<br></br>"value": "INC",<br></br>"description": "Indic"<br></br>},<br></br>{<br></br>"value": "IND",<br></br>"description": "Indonesian"<br></br>},<br></br>{<br></br>"value": "INH",<br></br>"description": "Ingush"<br></br>},<br></br>{<br></br>"value": "GLE",<br></br>"description": "Irish"<br></br>},<br></br>{<br></br>"value": "ITA",<br></br>"description": "Italian"<br></br>},<br></br>{<br></br>"value": "JPN",<br></br>"description": "Japanese"<br></br>},<br></br>{<br></br>"value": "JAV",<br></br>"description": "Javanese"<br></br>},<br></br>{<br></br>"value": "KAS",<br></br>"description": "Kashmiri"<br></br>},<br></br>{<br></br>"value": "KAZ",<br></br>"description": "Kazakh"<br></br>},<br></br>{<br></br>"value": "KHM",<br></br>"description": "Khmer"<br></br>},<br></br>{<br></br>"value": "KIR",<br></br>"description": "Kirghiz"<br></br>},<br></br>{<br></br>"value": "KOR",<br></br>"description": "Korean"<br></br>},<br></br>{<br></br>"value": "KUR",<br></br>"description": "Kurdish"<br></br>},<br></br>{<br></br>"value": "LAO",<br></br>"description": "Lao"<br></br>},<br></br>{<br></br>"value": "LAV",<br></br>"description": "Latvian"<br></br>},<br></br>{<br></br>"value": "LIT",<br></br>"description": "Lithuanian"<br></br>},<br></br>{<br></br>"value": "LTZ",<br></br>"description": "Luxembourgisch"<br></br>},<br></br>{<br></br>"value": "MAC",<br></br>"description": "Macedonian"<br></br>},<br></br>{<br></br>"value": "MAL",<br></br>"description": "Malayalam"<br></br>},<br></br>{<br></br>"value": "MAY",<br></br>"description": "Malay"<br></br>},<br></br>{<br></br>"value": "MLT",<br></br>"description": "Maltese"<br></br>},<br></br>{<br></br>"value": "MAO",<br></br>"description": "Maori"<br></br>},<br></br>{<br></br>"value": "MOL",<br></br>"description": "Moldavian"<br></br>},<br></br>{<br></br>"value": "MON",<br></br>"description": "Mongolian"<br></br>},<br></br>{<br></br>"value": "NEP",<br></br>"description": "Nepali"<br></br>},<br></br>{<br></br>"value": "NOR",<br></br>"description": "Norwegian"<br></br>},<br></br>{<br></br>"value": "ORI",<br></br>"description": "Oriya"<br></br>},<br></br>{<br></br>"value": "OSS",<br></br>"description": "Ossetian"<br></br>},<br></br>{<br></br>"value": "PAN",<br></br>"description": "Panjabi"<br></br>},<br></br>{<br></br>"value": "PER",<br></br>"description": "Persian"<br></br>},<br></br>{<br></br>"value": "POL",<br></br>"description": "Polish"<br></br>},<br></br>{<br></br>"value": "POR",<br></br>"description": "Portugese"<br></br>},<br></br>{<br></br>"value": "PUS",<br></br>"description": "Pushto"<br></br>},<br></br>{<br></br>"value": "RAJ",<br></br>"description": "Rajasthani"<br></br>},<br></br>{<br></br>"value": "RUM",<br></br>"description": "Romanian"<br></br>},<br></br>{<br></br>"value": "RUS",<br></br>"description": "Russian"<br></br>},<br></br>{<br></br>"value": "SMO",<br></br>"description": "Samoan"<br></br>},<br></br>{<br></br>"value": "SAN",<br></br>"description": "Sanskrit"<br></br>},<br></br>{<br></br>"value": "SRD",<br></br>"description": "Sardinian"<br></br>},<br></br>{<br></br>"value": "SCC",<br></br>"description": "Serbian"<br></br>},<br></br>{<br></br>"value": "SND",<br></br>"description": "Sindhi"<br></br>},<br></br>{<br></br>"value": "SIN",<br></br>"description": "Sinhalese"<br></br>},<br></br>{<br></br>"value": "SLO",<br></br>"description": "Slovak"<br></br>},<br></br>{<br></br>"value": "SLV",<br></br>"description": "Slovenian"<br></br>},<br></br>{<br></br>"value": "SOM",<br></br>"description": "Somali"<br></br>},<br></br>{<br></br>"value": "SPA",<br></br>"description": "Spanish"<br></br>},<br></br>{<br></br>"value": "SWA",<br></br>"description": "Swahili"<br></br>},<br></br>{<br></br>"value": "SWE",<br></br>"description": "Swedish"<br></br>},<br></br>{<br></br>"value": "SYR",<br></br>"description": "Syriac"<br></br>},<br></br>{<br></br>"value": "TGK",<br></br>"description": "Tajik"<br></br>},<br></br>{<br></br>"value": "TAM",<br></br>"description": "Tamil"<br></br>},<br></br>{<br></br>"value": "TEL",<br></br>"description": "Telugu"<br></br>},<br></br>{<br></br>"value": "THA",<br></br>"description": "Thai"<br></br>},<br></br>{<br></br>"value": "TIB",<br></br>"description": "Tibetan"<br></br>},<br></br>{<br></br>"value": "TUR",<br></br>"description": "Turkish"<br></br>},<br></br>{<br></br>"value": "UKR",<br></br>"description": "Ukrainian"<br></br>},<br></br>{<br></br>"value": "URD",<br></br>"description": "Urdu"<br></br>},<br></br>{<br></br>"value": "UZB",<br></br>"description": "Uzbek"<br></br>},<br></br>{<br></br>"value": "VIE",<br></br>"description": "Vietnamese"<br></br>},<br></br>{<br></br>"value": "WEL",<br></br>"description": "Welsh"<br></br>},<br></br>{<br></br>"value": "YID",<br></br>"description": "Yiddish"<br></br>}<br></br>],<br></br>"owner_handle_supported": true,<br></br>"admin_handle_supported": true,<br></br>"tech_handle_supported": true,<br></br>"billing_handle_supported": true,<br></br>"reseller_handle_supported": false,<br></br>"dnssec_keys_allowed": true,<br></br>"dnssec_digests_allowed": true,<br></br>"dnssec_max_records_amount": 0,<br></br>"dnssec_algorithms": [<br></br>8,<br></br>10,<br></br>12,<br></br>13,<br></br>14,<br></br>15,<br></br>16<br></br>]<br></br>}<br></br>],<br></br>"total": 1<br></br>}<br></br>}
```

</div></details><details><summary>RESPONSE VALUES</summary>

<div><table><tbody><tr><th>### **Name**

</th><th>### **Values**

</th><th>### **Description**

</th></tr><tr><td>code</td><td><span>result code number</span>

</td><td><span>[API Result with code returned](https://openprovider.help/books/api-plugins/page/api-error-codes).  
0 = Success with no errors.  
</span></td></tr><tr><td>**1. data**</td><td>**set of values**</td><td rowspan="2">**Returns an array of elements related to an extension**</td></tr><tr><td>**1.1 results**</td><td>**An array of elements.**

</td></tr><tr><td><span><span class="param-name-content">admin\_handle\_supported</span></span></td><td>boolean</td><td>Indicates if the administrator [handle](https://openprovider.help/books/api-plugins/page/api-guides-glossary#handle) exists for an extension.</td></tr><tr><td><span><span>billing\_handle\_enabled</span></span></td><td>boolean </td><td>Indicates if the billing [handle](https://openprovider.help/books/api-plugins/page/api-guides-glossary#handle) exists for an extension.</td></tr><tr><td><span>billing\_handle\_supported</span> </td><td>boolean </td><td>Indicates if the billing [handle](https://openprovider.help/books/api-plugins/page/api-guides-glossary#handle) is supported for an extension.</td></tr><tr><td>**1.1.1 description**</td><td>**Set of values (text strings).**</td><td>Returns the description.</td></tr><tr><td>1.1.1.1 text</td><td>string</td><td>Returns text description.</td></tr><tr><td>1.1.1.2 url</td><td>string</td><td>Link to registry providing extension.</td></tr><tr><td><span>dnssec\_algorithms</span></td><td>integer</td><td>Returns one or multiple records of methods available to be used with an extension.</td></tr><tr><td><span>[dnssec](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec)\_allowed</span></td><td>boolean</td><td>Indicates if [DNSSEC](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec) can be enabled for an extension.</td></tr><tr><td><span>[dnssec](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec)\_digests\_allowed</span></td><td>boolean </td><td>Indicates if [DNSSEC](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec) support digest type.</td></tr><tr><td><span>[dnssec](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec)\_keys\_allowed</span></td><td>boolean</td><td>Indicates if [DNSSEC](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec) keys can be used for an extension.</td></tr><tr><td><span>[dnssec](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec)\_max\_records\_amount</span></td><td>integer </td><td>The maximum amount of [DNSSEC](https://openprovider.help/books/api-plugins/page/api-guides-glossary#dnssec) records allowed.</td></tr><tr><td><span class="param-name-content">[domicile](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domicile)\_available</span></td><td>boolean</td><td>Indicates if extension support [domicile](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domicile) option.</td></tr><tr><td><span>is\_[auth\_code](https://openprovider.help/books/api-plugins/page/api-guides-glossary#auth_code)\_available</span></td><td>boolean</td><td><span>If the [authorization code](https://openprovider.help/books/api-plugins/page/api-guides-glossary#auth_code) is available immediately on demand.</span></td></tr><tr><td><span>is\_auth\_code\_changeable</span></td><td>boolean</td><td>Indicates if the [authorization code](https://openprovider.help/books/api-plugins/page/api-guides-glossary#auth_code) could be changed per administrator request.</td></tr><tr><td><span>is\_private\_whois\_allowed</span></td><td>boolean</td><td>Indicated whenever [WPP](https://openprovider.help/books/api-plugins/page/api-guides-glossary#wpp) feature is available for an extension.</td></tr><tr><td><span>is\_trade\_auth\_code\_required</span></td><td>boolean</td><td>Indicates if the customer requires an [authorization code](https://openprovider.help/books/api-plugins/page/api-guides-glossary#auth_code) to complete trade procedure.</td></tr><tr><td><span>is\_transfer\_auth\_code\_required</span></td><td>boolean</td><td><span>Indicates if the transfer is done via [authorization code](https://openprovider.help/books/api-plugins/page/api-guides-glossary#auth_code).</span></td></tr><tr><td>**1.1.2 level\_prices**</td><td>**An array.**</td><td>Returns an array of lever ([Tier](https://support.openprovider.eu/hc/en-us/articles/216644088)) price.</td></tr><tr><td>level</td><td>Min:1, Max: 8</td><td>Indicates reseller Level ([Tier](https://support.openprovider.eu/hc/en-us/articles/216644088)).</td></tr><tr><td>**1.1.2.1 price**</td><td rowspan="2">**Set of values.**</td><td rowspan="2">Returns a set of values.</td></tr><tr><td>**1.1.2.1.1 product**</td></tr><tr><td> 1.1.1.2.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td> 1.1.1.2.1.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.2.1.2 reseller**</td><td>Set of values.</td><td>Set of values returned.</td></tr><tr><td>1.1.2.1.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.2.1.2.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>max\_period</td><td>integer</td><td>Indicates max. period of registration (in years).</td></tr><tr><td>min\_period</td><td>integer</td><td>Indicates min. period of registration (in years).</td></tr><tr><td>name</td><td>string</td><td>Extension name.</td></tr><tr><td>owner\_handle\_supported</td><td>boolean</td><td>Indicates if extension support owner handle.</td></tr><tr><td>**1.1.3 prices**</td><td rowspan="3">**Set of values.**</td><td rowspan="3">**Set of values returned.** </td></tr><tr><td>**1.1.3.1 create\_price**</td></tr><tr><td>**1.1.3.1.1 product**</td></tr><tr><td>1.1.3.1.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.1.1.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.1.2 reseller**</td><td>**Set of values: reseller price for an extension.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.1.2.1 currency</td><td>string </td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.1.2.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.2 domicile\_price**</td><td>**Set of values: domicile price for the product itself and for reseller.** </td><td>**Set of values returned.**</td></tr><tr><td>**1.1.3.2.1 product**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.2.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.2.1.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.2.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.2.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.2.2.2 price</td><td>number (double)</td><td>Indicates the domain price if presented. </td></tr><tr><td>max\_period</td><td>integer</td><td>Indicates max. period of registration (in years). </td></tr><tr><td>min\_period</td><td>integer</td><td>Indicates min. period of registration (in years).</td></tr><tr><td>**1.1.3.3 renew\_price**</td><td>**Set of values: renewal price for the product itself and for reseller.**</td><td rowspan="2">**Set of values returned.** </td></tr><tr><td>**1.1.3.3.1 product**</td><td>**Set of values.**</td></tr><tr><td>1.1.3.3.1.1 currency</td><td>string </td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.3.1.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.3.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.3.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.1.3.3.2.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.4 reseller\_price**</td><td>**Set of values: reseller price for the product itself and for reseller.**</td><td>An array of price parameters applicable to the current reseller.</td></tr><tr><td>**1.1.3.4.1 product**</td><td>**Set of price values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.4.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td> 1.1.3.4.1.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.4.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.4.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.13.4.2.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.5 restore\_price**</td><td>**Set of values: restore price for the product itself and for reseller.**</td><td>**Set of values returned.**</td></tr><tr><td>**1.1.3.5.1 product**</td><td>**Set of values**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.5.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.1.3.5.1.2 price </td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.5.2 reseller**</td><td>**Set of values**</td></tr><tr><td>1.1.3.5.2.1 currency</td><td>string </td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.5.2.2 price </td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.6 setup\_price**</td><td>**Set of values: setup price for the product itself and for reseller.**</td><td>**Set of values returned.**</td></tr><tr><td>**1.1.3.6.1 product**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.6.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.6.1.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.6.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned**</td></tr><tr><td>1.1.3.6.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.6.2.2 price</td><td>number (double)</td><td>Indicates the domain price if presented. </td></tr><tr><td>**1.1.3.7 soft\_restore\_price**</td><td>**Set of values: soft restore price for the product itself and for reseller.**</td><td>**Set of values returned.**</td></tr><tr><td>**1.1.3.7.1 product**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.7.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.7.1.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.7.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.7.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.7.2.2 price</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.8 trade\_price**</td><td>**Set of values: trade price for the product itself and for reseller.**</td><td>**Set of values returned.**</td></tr><tr><td>**1.1.3.8.1 product**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.8.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.1.3.8.1.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.8.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.8.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.1.3.8.2.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.9 transfer\_price**</td><td>**Set of values: transfer price for the product itself and for reseller.**</td><td>**Set of values returned.**</td></tr><tr><td>**1.1.3.9.1 product**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.9.1.1 currency </td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.1.3.9.1.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.9.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.9.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.1.3.9.2.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.10 update\_price**</td><td>**Set of values: update price for the product itself and for reseller.**</td><td>**Set of values returned.**</td></tr><tr><td>**1.1.3.10.1 product**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.10.1.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.10.1.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.1.3.10.2 reseller**</td><td>**Set of values.**</td><td>**Set of values returned.**</td></tr><tr><td>1.1.3.10.2.1 currency</td><td>string</td><td>Indicates the domain price currency if presented. </td></tr><tr><td>1.1.3.10.2.2 price</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>[quarantine\_period ](https://openprovider.help/books/api-plugins/page/api-guides-glossary)</td><td>integer</td><td>Indicates [quarantine](https://openprovider.help/books/api-plugins/page/api-guides-glossary) period application for an extension.</td></tr><tr><td><span>reseller\_handle\_enabled</span></td><td>boolean</td><td>Indicates if domain reseller handle enabled for an extension.</td></tr><tr><td><span>reseller\_handle\_supported</span></td><td>boolean</td><td>Indicates if domain reseller handle supported enabled for an extension.</td></tr><tr><td>restrictions</td><td>An array of string(s).</td><td>Returns an extension restrictions.</td></tr><tr><td>status</td><td>string.</td><td>Returns extension status.</td></tr><tr><td>**1.2 supported\_application\_mode**</td><td>**An array of strings.**</td><td>**An array of strings returned.**</td></tr><tr><td>1.2.1 name</td><td>string</td><td>Returns supported name application mode.</td></tr><tr><td>1.2.2 title</td><td>string</td><td>Returns supported the title of application mode.</td></tr><tr><td>**[1.3 supported\_idn\_scripts](https://openprovider.help/books/api-plugins/page/api-guides-glossary#idn)**</td><td>**An array of strings.**</td><td>**Returns parameters related to [IDN](https://openprovider.help/books/api-plugins/page/api-guides-glossary#idn).**</td></tr><tr><td>1.3.1 description</td><td>string</td><td>Returns supported IDN description.</td></tr><tr><td>1.3.2 value</td><td>string</td><td>Returns values of IDN scripts.</td></tr><tr><td><span class="param-name-content">tech\_handle\_supported</span></td><td>boolean</td><td>Indicates if technical handle supported fr an extension.</td></tr><tr><td>[trade\_available](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_trade)</td><td>boolean</td><td>Indicates if [trade](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_trade) operation allowed for an extension.</td></tr><tr><td>[transfer\_available](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_transfer)</td><td>boolean</td><td>Indicates if [transfer](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_transfer) operation allowed for an extension.</td></tr><tr><td>usage\_count</td><td>integer</td><td>Returns a quantity of domain with requested extension from the current resellers account.</td></tr><tr><td>desc</td><td>string</td><td>The description.</td></tr><tr><td>maintenance</td><td>boolean</td><td>Indicates if Openprovider is under maintenance mode.</td></tr><tr><td>**1.4 warnings**</td><td>**An array of strings.**</td><td>**An array of boolean and string data returned if maintenance is in progress.**</td></tr><tr><td>1.4.1 code</td><td>integer</td><td><span>Code value (digits).</span></td></tr><tr><td>1.4.2 data</td><td>string</td><td><span>Data value returned.</span></td></tr><tr><td>1.4.3 desc</td><td>string</td><td>The description value returned.</td></tr></tbody></table>

</div></details></div></div></div><details id="bkmrk-request-example-for-"><summary>REQUEST EXAMPLE FOR MORE THAN ONE TLDs</summary>

<div>```
curl -X GET 'https://api.openprovider.eu/v1beta/tlds?status=ACT&extensions=com&extensions=store' -H 'Authorization: Bearer *******************'
```

</div></details>The above query will fetch details for both "com" and "store" extensions.

**Once we've retrieved an extension(s) with its parameters and requirements then we can check an exact domain we want to register. Please move to "[2 Domains API: Check Domain](https://openprovider.help/books/api-plugins/page/2-domains-api-check-domain)".**

# 10 Domains API: Check gTLD email verification status

*This is a series of articles in which we are going to cover registrant contact verification.*

*This is a first article in a series in which we are going to search for email addresses and their respective statuses with regard to the aforementioned validation procedure. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

Due to ICANN requirements, Openprovider is obliged to verify the validity of each email address that is used in the owner contact details of any gTLD registration. gTLDs include all extensions that are not country codes (ccTLDs): common generics like .com, .net and .travel, and all new gTLDs like .guru, .berlin and .app.

Usually, this process is handled automatically depending on the actions that are being applied to a domain. More on this could be found in our [Knowledge Base.](https://openprovider.help/books/domains/page/registrant-email-verification-icann-contact-validation) However, if for some reason the process should be re-initiated, we have corresponding API methods for the very same purpose.

## <span>Searching for email's status</span>

<span>First, let's focus on retrieving the status of a validation request. In order to do so we are going to utilise List domain email verifications method.</span>

***NB** If there are multiple domains linked to one e-mail address, multiple rows are returned.*

All input parameters in this method are optional. Omitting all at once will result into a full list of email objects with their respective statuses.

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-mh22ppeq.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-get-%7Bbase_url%7D%2Fcusto">```
<span><strong>GET</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/customers/verifications/emails/domains</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>domain</td><td>string</td><td><span>Optional.</span></td></tr><tr><td>[handle](https://doc.openprovider.eu/API_Format_Handle)</td><td>string</td><td>Optional.</td></tr><tr><td>email</td><td>string</td><td>Optional.</td></tr><tr><td>status</td><td>custom</td><td>Optional. Allowed values: failed / in progress / not verified / verified</td></tr><tr><td>description</td><td>custom</td><td>Reason of failure. Allowed values: expired / bounced</td></tr><tr><td>is\_suspended</td><td>boolean</td><td>Optional.</td></tr><tr><td>[limit](https://doc.openprovider.eu/API_Format_Limit)</td><td>integer</td><td>default value: 100, maximum value: 1000</td></tr><tr><td>[offset](https://doc.openprovider.eu/API_Format_Offsethttps://doc.openprovider.eu/API_Format_Offset)</td><td>integer</td><td>default value: 0</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X GET \<br></br> 'https://api.openprovider.eu/v1beta/customers/verifications/emails/domains?domain=test.com' \<br></br> -H 'Authorization: Bearer 2831a37fb8*******90b5aac822' \<br></br> -H 'Content-Type: application/json' \
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": {<br></br>"results": [<br></br>{<br></br>"domain": "test.com",<br></br>"email": "john@example.com",<br></br>"handle": "AB123456-NL",<br></br>"status": "failed",<br></br>"description": "expired",<br></br>"is_suspended": true,<br></br>"expiration_date": "0000-00-00 00:00:00"<br></br>}<br></br>],<br></br>"total": 1<br></br>}<br></br>}
```

</details><div id="bkmrk-response-values-name"><div><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>[handle](https://doc.openprovider.eu/API_Format_Handle)</td><td>string</td></tr><tr><td>email</td><td>string</td></tr><tr><td>status</td><td>custom</td><td>Allowed values: failed / in progress / not verified / verified</td></tr><tr><td>description</td><td>custom</td><td>Reason of failure. Allowed values: expired / bounced</td></tr><tr><td>domain</td><td>string</td></tr><tr><td>is\_suspended</td><td>boolean</td></tr><tr><td>expiration\_date</td><td>integer</td><td>populated if the verification is still "in progress"; indicating the date &amp; time at which the e-mail address will be marked as "failed" and related domains will be suspended</td></tr></tbody></table>

</details><span>In the following article we are going to see how one can restart the verification procedure if need be.</span>

</div></div></div></div>

# 11 Domain API: Start gTLD email verification

*This is a series of articles in which we are going to cover registrant contact verification.*

*This is a second article in a series in which we are going to start email verification procedure for a gTLD domain owner. Navigate [here](https://openprovider.help/books/api-plugins/page/10-domains-api-check-gtld-email-verification-status) to go back to a previous article. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

Due to ICANN requirements, Openprovider is obliged to verify the validity of each email address that is used in the owner contact details of any gTLD registration. gTLDs include all extensions that are not country codes (ccTLDs): common generics like .com, .net and .travel, and all new gTLDs like .guru, .berlin and .app.

Usually, this process is handled automatically depending on the actions that are being applied to a domain. More on this could be found in our [Knowledge Base.](https://openprovider.help/books/domains/page/registrant-email-verification-icann-contact-validation) However, if for some reason the process should be re-initiated, we have corresponding API methods for the very same purpose.

## <span>Restarting validation</span>

One should use Start <span>Email Verification method i</span>n order to startvalidation of an owner's email address.

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-9aawyzfx.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-get-%7Bbase_url%7D%2Fcusto">```
<span><strong>GET</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/customers/verifications/emails/start</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>email</td><td>string</td><td>**Required.**</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> https://api.openprovider.eu/v1beta/customers/verifications/emails/start \<br></br> -H 'Authorization: ' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br> "email": "email@domain.com",<br></br> "handle": "XX123456-XX",<br></br> "language": "en"<br></br>}'
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 20001,<br></br> "data": {<br></br> "id": 15466<br></br> },<br></br> "desc": "Verification email in progress"<br></br>}
```

</details><div id="bkmrk-response-values-name"><div><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>id</td><td>integer</td></tr></tbody></table>

</details>Now that the verification email has been sent to a domain owner, he or she needs to follow its instructions in order to prevent [domain suspension](https://openprovider.help/books/domains/page/registrant-email-verification-icann-contact-validation#suspension).

If, for any reason, you have to reinitiate this procedure, please consider utilising <span>[Restart Email Verification](https://openprovider.help/books/api-plugins/page/12-domains-api-restart-gtld-email-verification) method.</span>

</div></div></div></div>

# 12 Domains API: Restart gTLD email verification

*This is a series of articles in which we are going to cover registrant contact verification.*

*This is a third article in a series in which we are going to restart email verification procedure for a gTLD domain owner. Navigate [here](https://openprovider.help/books/api-plugins/page/10-domains-api-check-gtld-email-verification-status) to go back to the first article. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

Due to ICANN requirements, Openprovider is obliged to verify the validity of each email address that is used in the owner contact details of any gTLD registration. gTLDs include all extensions that are not country codes (ccTLDs): common generics like .com, .net and .travel, and all new gTLDs like .guru, .berlin and .app.

Usually, this process is handled automatically depending on the actions that are being applied to a domain. More on this could be found in our [Knowledge Base.](https://openprovider.help/books/domains/page/registrant-email-verification-icann-contact-validation) However, if for some reason the process should be re-initiated, we have corresponding API methods for the very same purpose.

## <span>Restarting validation</span>

One should use R<span>estart Email Verification method i</span>n order to restartvalidation of an owner's email address.

***NB** Executing this command during an already running email validation process will cause resending of the last verification email to a customer*

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-yebbdriq.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-get-%7Bbase_url%7D%2Fcusto">```
<span><strong>GET</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/customers/verifications/emails/start</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>email</td><td>string</td><td>**Required.**</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> https://api.openprovider.eu/v1beta/customers/verifications/emails/restart \<br></br> -H 'Authorization: ' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br> "email": "email@domain.com",<br></br> "handle": "XX123456-XX",<br></br> "language": "en"<br></br>}'
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"data": {<br></br>"success": true<br></br>},<br></br>"desc": ""<br></br>}
```

</details>### RESPONSE VALUES

If the operation went successfully, one will receive a corresponding code (0).

</div></div>

# 13 Domains API: How to create a domain

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.*

*This is a first article in a series in which we are going to cover **basic domain management operations**. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

You must have an active Openprovider account for this command to complete successfully. Please keep in mind that you will be automatically charged the registration fee upon successful registration.

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-wf8xicsl.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-post-%7Bbase_url%7D%2Fdoma">```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>name</td><td>string</td><td>**Required.**</td></tr><tr><td>period</td><td>integer</td><td>**Required.**</td></tr><tr><td>auth\_code</td><td>varchar</td><td>Optional.</td></tr><tr><td>owner\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>admin\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>tech\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>billing\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>reseller\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>ns\_group</td><td>string</td><td>**Required** only if name\_servers field is empty</td></tr><tr><td><span>ns\_template\_name</span></td><td>string</td><td>Optional. N<span>ame of the template to use to automatically create DNS zone for the domain; only applicable if nsGroup is </span>*dns-openprovider*</td></tr><tr><td>name\_servers</td><td>Array of objects (Array containing name server information)</td><td>**Required** only if nsGroup field is empty</td></tr><tr><td>autorenew</td><td>custom</td><td>*on | off | default* </td></tr><tr><td><span>is\_dnssec\_enabled</span></td><td>boolean</td><td>0 (default) or 1 - Only accepted when nameservers of Openprovider are used</td></tr><tr><td>dnssec\_keys</td><td>varchar</td><td>when using your own nameservers</td></tr><tr><td>use\_domicile</td><td>boolean</td><td>0 or 1</td></tr><tr><td><span>accept\_premium\_fee</span></td><td>int or double</td><td>Required in case when domain is premium, value is the price returned in the response for createDomainRequest without acceptPremiumFee</td></tr><tr><td>is\_private\_whois\_enabled </td><td>boolean</td><td>default value is 0</td></tr><tr><td><span>promo\_code</span></td><td>string</td></tr><tr><td>comments</td><td>string</td></tr><tr><td>additional\_data </td><td>custom</td><td><span>mandatory for some TLDs</span></td></tr><tr><td>application\_mode</td><td>custom</td><td><span>required for new gTLDs</span></td></tr></tbody></table>

</details>***NB** The owner, admin and tech handles can be retrieved via the [customers endpoint](https://openprovider.help/books/api-plugins/page/7-customers-api-how-to-get-an-existing-handle) and will be the registered contacts for this domain.*

<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> 'http://api.openprovider.eu/v1beta/domains' \<br></br> -H 'Accept: */*' \<br></br> -H 'Authorization: ,Bearer 2f4c1c3a9******15d22b378a64' \<br></br> -H 'Connection: keep-alive' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br> "owner_handle": "XX000001-XX",<br></br> "admin_handle": "XX000001-XX",<br></br> "tech_handle": "XX000001-XX",<br></br> "billing_handle": "XX000001-XX",<br></br> "domain": {<br></br> "extension": "com",<br></br> "name": "example"<br></br> },<br></br> "period": 1,<br></br> "ns_group": "dns-openprovider"<br></br>}
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "activation_date": "2019-04-29 17:15:19",<br></br> "auth_code": "C8$#wgG#25tQ",<br></br> "expiration_date": "2020-04-29 17:15:19",<br></br> "id": 10592139,<br></br> "renewal_date": "2020-04-29 17:15:19",<br></br> "status": "ACT"<br></br> },<br></br> "desc": ""<br></br>}
```

</details><div id="bkmrk-response-values-name"><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>status</td><td>ACT - active or REQ - requested</td></tr><tr><td>auth\_code</td><td>only in case if TLD supports it</td></tr><tr><td>activation\_date</td><td>available only in case of a succeeded realtime domain registration</td></tr></tbody></table>

</details></div></div></div>

# 14 Domains API: How to transfer a domain

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.*

*This is a first article in a series in which we are going to cover **incoming domain transfer**. To get more information about our API in general, please use our [documentation portal](https://doc.openprovider.eu) as your reference.*

Domain transfer is a procedure of changing the current registrar of a domain name.

Once a transfer has been made, Openprovider will maintain all relevant information regarding the domain and its owner.

Before starting a transfer, please make sure you have the approval of the owner of the domain name and that the current registrar is aware of your desire to transfer that object.

![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-3irvilec.png)<span>Use endpoint path below. Base URL is determined by both the target environment and API version.  
</span>

```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/ListProducts"><strong>{base_url}</strong></a>/domains/transfer</span>
```

<div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>name</td><td>string</td><td>**Required.**</td></tr><tr><td>period</td><td>integer</td><td>**Required.**</td></tr><tr><td>auth\_code</td><td>varchar</td><td>Optional.</td></tr><tr><td>owner\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>admin\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>tech\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>billing\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>reseller\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>ns\_group</td><td>string</td><td>**Required.**</td></tr><tr><td><span>ns\_template\_name</span></td><td>string</td><td>Optional. N<span>ame of the template to use to automatically create DNS zone for the domain; only applicable if nsGroup is </span>*dns-openprovider*</td></tr><tr><td>name\_servers</td><td>dot separated integer</td><td>**Required** if only if nsGroup field is empty</td></tr><tr><td>autorenew</td><td>custom</td><td>*on | off | default* </td></tr><tr><td><span>is\_dnssec\_enabled</span></td><td>boolean</td><td>false (default) or true - Only accepted when nameservers of Openprovider are used</td></tr><tr><td>dnssec\_keys</td><td>varchar</td><td>when using your own nameservers</td></tr><tr><td>use\_domicile</td><td>boolean</td><td>false (default) or true</td></tr><tr><td><span>accept\_premium\_fee</span></td><td>int or double</td><td>Required in case when domain is premium, value is the price returned in the response for createDomainRequest without acceptPremiumFee</td></tr><tr><td>is\_private\_whois\_enabled </td><td>boolean</td><td>false (default) or true</td></tr><tr><td><span>promo\_code</span></td><td>string</td></tr><tr><td>comments</td><td>string</td><td>Optional. Domain comments/notes</td></tr><tr><td>additional\_data </td><td>custom</td><td><span>mandatory for some TLDs</span></td></tr><tr><td>application\_mode</td><td>custom</td><td><span>required for new gTLDs</span></td></tr><tr><td>import\_contacts\_from\_registry</td><td>boolean</td><td><span>Optional. Default value: false. Available for .nl and .ie transfers to import domain contacts from registry.</span></td></tr><tr><td>import\_nameservers\_from\_registry</td><td>boolean</td><td><span>Optional. Default value: false. Available for .nl and .ie transfers to import nameservers from registry.</span></td></tr></tbody></table>

</details></div><div id="bkmrk-request-examplecurl-"><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> https://api.openprovider.eu/v1beta/domains/transfer \<br></br> -H 'Authorization: ,Bearer 2f4c1c3a9******15d22b378a64' \<br></br> -H 'Content-Type: application/json' \<br></br><br></br> -d '{<br></br>"admin_handle": "XX123456-XX",<br></br>"auth_code": "gX38tslFG2#%F%%1",<br></br>"autorenew": "default",<br></br>"domain": {<br></br>"extension": "com",<br></br>"name": "domain",<br></br>},<br></br>"ns_group": "dns-openprovider",<br></br>"owner_handle": "RB919364-BE",<br></br>"period": 1,<br></br>"promo_code": "",<br></br>"tech_handle": "XX123456-XX",<br></br>}
```

</details></div><div id="bkmrk-response-example%7B-%22c"><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "auth_code": "Z79******sTaH",<br></br> "expiration_date": "2020-03-31 23:59:59",<br></br> "renewal_date": "2020-03-29 23:59:59",<br></br> "status": "ACT",<br></br> },<br></br> "desc": ""<br></br>}
```

</details></div><div id="bkmrk-response-values-name"><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>[expiration\_date](https://doc.openprovider.eu/API_Format_expirationDate)</td><td>timestamp</td><td>available only in case of a successful realtime domain transfer</td></tr><tr><td>[expiration\_date\_openprovider](https://doc.openprovider.eu/API_Format_Period)</td><td>timestamp</td><td>available only in case of a successful realtime domain transfer</td></tr></tbody></table>

</details></div><span>The 0 code that we received indicates that the domain object has been successfully created in Openprovider's database.</span>

<span>Afterwards, the transfer will be initiated at the registry level and the domain will be put in "pendingTransfer" status. The previous registrar should release the domain within up to 5-7 days. Unless they take any actions to prevent the transfer, it will be approved automatically.</span>

<span>Check the TLD documentation for the domain in question in order to see what the procedures are. Our documentation also tells you how long a transfer can take. This can range from near an instant to over a month.</span>

<span>When the procedure is over, you will receive a corresponding notification to the email address associated with your Openprovider account. Depending on a TLD, the domain will be renewed for one year and its status will automatically be set to 'clientTransferProhibited' ("Lock domain" will be enabled).</span>

# 15 Domains API: How to request or reset an authcode

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.*

*This is a second article in a series in which we are going to cover **outgoing domain transfer**. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

Domain transfer is a procedure of changing the current registrar of a domain name. Domain names may be transferred only if they have been registered with the previous registrar for 60 days or more.

To transfer a domain out of Openprovider one should submit a transfer request with a new registrar. You should follow their instructions on the specifics of the process.

The following requirements should be met before initiating the transfer:

- for gTLD domains, the domain is more than 30 days old;
- for gTLD domains, the domain was not transferred between registrars within the last 60 days;
- the domain is "Unlocked" for transfer.

You can disable the Transfer Lock by utilizing [modifyDomainRequest](https://openprovider.help/books/api-plugins/page/21-domains-api-how-to-update-domains-attributes) method. Yet in this article, we are going to focus on how to request or reset an Auth code for a domain.

In order to request an Auth code of a domain one should utilize the **requestAuthCodeDomainRequest** method. It reads the transfer authorization code (or EPP code) from the registry or triggers the registry to send the code to a domain owner (in case of .be and .eu, for instance.

<div id="bkmrk-use-the-endpoint-pat">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-abmoqz8y.png)Use the endpoint path below. Base URL is determined by both the target environment and the API version.</div><div id="bkmrk-get-%7Bbase_url%7D%2Fdomai">```
<span><strong>GET</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}/authcode</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>id</td><td>string</td><td>**Required.**</td></tr><tr><td>auth\_code\_type</td><td>string</td><td>Optional. Type of transfer authorization code. Values: **external** (default) or **internal** (for internal transfers between reseller accounts in Openprovider only).</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X GET \<br></br> '<span>https://api.openprovider.eu</span>/v1beta/domains/123456/authcode' \<br></br> -H 'Authorization: ,Bearer 2831a37fb8*******90b5aac822' \
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": {<br></br>"auth_code": "12345678",<br></br>"success": true,<br></br>"type": "external"<br></br>}<br></br>}
```

</details>Sometimes a domain might not have an Auth code assigned to it. in such a case, it may be necessary to reset. The procedure is barely any different from requesting an already existing one. If the situation requires you to reset an Auth code, you can use resetAuthCodeDomainRequest which will generate a new authorisation code if a certain registry allows it.

<div>![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-nmxuqljf.png)Use the endpoint path below. Base URL is determined by both the target environment and the API version.</div><div>```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}/authcode/reset</span>
```

</div>The method has almost identical input parameters as the previous one:

<div id="bkmrk-request-values-name--1"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>id</td><td>string</td><td>**Required.**</td></tr><tr><td>auth\_code\_type</td><td>string</td><td>**Optional.**Type of transfer authorization code. Values: "**external"** (default) or "**internal"** (for internal transfers between reseller accounts in Openprovider only).</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl--1"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> '<span>https://api.openprovider.eu</span>/v1beta/domains/123456/authcode/reset' \<br></br> -H 'Authorization: ,Bearer 2831a37fb8*******90b5aac822' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br>{<br></br> "auth_code_type": "internal"<br></br>}
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "auth_code": "12345678",<br></br> "domain_roid": "",<br></br> "epp_statuses": [<br></br> ""<br></br> ],<br></br> "success": true,<br></br> "type": "internal"<br></br> },<br></br> "desc": ""<br></br>}
```

</details><span>Domain transfers can take up to five days to complete, but once the transfer is pending, you can expedite the process by [approving it manually](https://openprovider.help/books/api-plugins/page/16-domains-api-how-to-approve-outgoing-domain-transfer).</span>

</div></div></div></div>

# 16 Domains API: How to approve outgoing domain transfer

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.*

*This is a third article in a series in which we are going to cover **outgoing domain transfer**. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

Domain transfer is a procedure of changing the current registrar of a domain name.

In the [previous article](https://openprovider.help/books/api-plugins/page/15-domains-api-how-to-request-or-reset-an-authcode) we have covered all prerequisites that have to be met in order to conduct a successful domain transfer.

Now that your domain is ready to be transferred the procedure itself should be initiated with the gaining registrar, so you'll need to contact them for specific instructions, but here's a general idea of what you'll need to do:

- authenticate in the system of the gaining registrar;
- begin the domain transfer process according to their instructions;
- provide an EPP code you copied from the Domain management page in RCP or acquired via the [Request Authcode Domain method](https://openprovider.help/books/api-plugins/page/15-domains-api-how-to-request-or-reset-an-authcode).

<div id="bkmrk-use-the-endpoint-pat">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-7shvobp8.png)Use the endpoint path below. The base URL is determined by both the target environment and the API version.</div><div id="bkmrk-post-%7Bbase_url%7D%2Fdoma">```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}/transfer/approve</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>id</td><td>string</td><td>Domain id. **Required.**</td></tr><tr><td>domain</td><td>string</td><td>Domain name</td></tr><tr><td>approve</td><td>boolean</td><td>**Required.** 0 or 1</td></tr><tr><td>registrar\_tag</td><td>string</td><td>Required only for \*.uk domains </td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br>'https://api.openprovider.eu/v1beta/domains/123456/transfer/approve' \<br></br>-H 'Authorization: ,Bearer 2831a37fb8*******90b5aac822' \<br></br>-H 'Content-Type: application/json' \<br></br>-d '{<br></br>      "approve": 1,<br></br>      "auth_code": "",<br></br>      "domain": {<br></br>      "extension": "london",<br></br>      "name": "test4"<br></br>      },<br></br>      "id": 0,<br></br>      "registrar_tag": "REGISTRAR-TAG"<br></br>   }'
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "success": true<br></br> },<br></br> "desc": ""<br></br>}
```

</details>After the transfer at the new registrar is initiated and the auth code is provided, the transfer will be initiated at the Registry level.

<span>Check the TLD documentation for the domain in question in order to see what the procedures are. Our documentation also tells you how long a transfer can take. This can range from near an instant to over a month.</span>

</div></div>

# 17 Domains API: How to restart domain transfer

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.*

*This is a fourth article in a series in which we are going to cover **incoming domain transfer**. To get more information about our API in general, please use our [documentation portal](https://doc.openprovider.eu) as your reference.*

Domain transfer is a procedure of changing the current registrar of a domain name. Domain names may be transferred only if they have been registered with the previous registrar for 60 days or more.

In the [previous article](https://openprovider.help/books/api-plugins/page/14-domains-api-how-to-transfer-a-domain) we have focused on how to start a domain transfer. However, there are a few things that will cause a domain transfer to fail. If you have followed the [preparation steps](https://openprovider.help/books/api-plugins/page/15-domains-api-how-to-request-or-reset-an-authcode), you have eliminated the majority of these possibilities. If you fixed potential impediments you can easily restart the transfer with the help of [Try Again Last Operation](https://docs.openprovider.com/doc/all#operation/TryAgainLastOperation).

This method makes an attempt to retry a failed action like transfer or trade using the same parameters that were initially used.

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-qqufkhgh.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-post-%7Bbase_url%7D%2Fdoma">```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}/last-operation/restart</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>domain</td><td>string</td><td>**Required.**</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> 'https://api.openprovider.eu/v1beta/<span>123456/last-operation/restart</span>' \<br></br> -H 'Authorization: ,Bearer 2831a37fb8*******90b5aac822' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br>{<br></br> "domain": {<br></br> "extension": "com",<br></br> "name": "domain",<br></br> },<br></br>}
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "success": true<br></br> },<br></br> "desc": ""<br></br>}
```

</details>After the transfer at the new registrar is initiated and the auth code is provided, the transfer will be initiated at the Registry level.

</div></div>

# 18 Domains API: How to renew a domain

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.* *To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

If you have chosen to have your domain name to be renewed automatically you won't need to worry about registration periods, your domains will be renewed automatically. Unless you haven't opted in for this option or your credit funds are insufficient the domain name will be removed on its expiration date in Openprovider.

In order to prevent a potential domain name loss you can explicitly renew it with the help of renewDomainRequest method. Some TLDs can be renewed at any given time, others, on the the other hand, only within a certain timeframe before their expiration date. Depending on the TLD you will receive a comprehensive answer from our API.

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-cuwg8zuu.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-post-%7Bbase_url%7D%2Fdoma">```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}/renew</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>[domain](https://doc.openprovider.eu/API_Format_Domain)</td><td>string</td><td>**Required.**</td></tr><tr><td>[period](https://doc.openprovider.eu/API_Format_Period)</td><td>integer</td><td>**Required.**</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> 'https://api.openprovider.eu/v1beta/domains/123456/renew' \<br></br> -H 'Accept: */*' \<br></br> -H 'Authorization: ,Bearer 2f4c1c3a9******15d22b378a64' \<br></br> -H 'Connection: keep-alive' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br> "domain": {<br></br> "extension": "com",<br></br> "name": "domain",<br></br> },<br></br> "period": 2<br></br>}
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "status": "ACT"<br></br> },<br></br> "desc": ""<br></br>}
```

</details>If you do not want to renew the domain you can delete it or set it to not renew automatically before the expiration date in Openprovider.

Please refer to our [renewal policies](https://openprovider.help/books/quick-start/page/renewal-policies-in-openprovider) to get more information.

</div></div>

# 19 Domains API: How to restore a domain

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.* *To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

Usually, there are only two scenarios in which a domain name is eligible for a restoration:

- the domain was manually deleted within the last 30 days
- the domain expired between 30-60 days ago

Learn more about expiration policies [here](https://openprovider.help/books/quick-start/page/renewal-policies-in-openprovider).

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-bepvacaj.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-post-%7Bbase_url%7D%2Fdoma">```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}/restore</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>id</td><td>integer</td><td>**Required.** Domain id</td></tr><tr><td>domain</td><td>string</td><td>**Required.**</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> 'http://api.openprovider.eu/v1beta/<span>domains/123456/restore</span>' \<br></br> -H 'Accept: */*' \<br></br> -H 'Authorization: ,Bearer 2f4c1c3a9******15d22b378a64' \<br></br> -H 'Connection: keep-alive' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br>"domain": {<br></br>"extension": "com",<br></br>"name": "domain",<br></br>}
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "status": "ACT"<br></br> },<br></br> "desc": ""<br></br>}
```

</details>## Restoring a deleted domain

After you delete a domain, you have a [grace period](https://openprovider.help/books/domains/page/life-cycle-of-a-typical-gtld-domain-name) (soft quarantine) during which you can reclaim ownership. When you restore a deleted domain, you pay a one-time restoration fee. Restoring your domain reinstates the original registration period(the domain will be *not* automatically renewed).

## Restoring an expired domain

<span>If your domain expired and you’ve passed the grace period (hard quarantine) for your domain TLD (typically 30-45 days) but fewer than 60 days ago, you can still restore your expired domain. When you restore an expired domain, you have to pay a one-time restoration fee and purchase at least one year of renewal.</span>

</div></div>

# 2 Domains API: Check Domain

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.*

*This is the third article in a series in which we are going to check domain data. To get more information about our API in general, please use our [documentation portal link](https://docs.openprovider.com/doc/domain.swagger#operation/CheckDomain) as your reference.*

<div id="bkmrk-after-all-the-regist">After all the registration requirements for registering exact extensions are clear, we can begin the process of checking the availability of the desired domain for registration, cause some of the names may be already reserved or be too expensive if the [premium](https://openprovider.help/books/api-plugins/page/api-guides-glossary#premium_domain) domain is checked. You should be aware of it.</div><div id="bkmrk-use-endpoint-path-be"><div><div>![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-anq7p1va.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div>```
<span><strong>POST <a href="http://docs.openprovider.com/#operation/CheckDomain">{base_url}</a></strong>/domains/check</span>
```

</div></div><div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<div><table><tbody><tr><th>### **Name**

</th><th>### **Type**

</th><th>### **Values**

</th><th>### **Description**

</th></tr><tr><td>**1. additional\_data**</td><td>object</td><td colspan="2">Domain additional data (if required).</td></tr><tr><td>1.1 idn\_script</td><td>string</td><td>Domain name value.</td><td><span>The idn script states what language or character set the domain name is in Applicable to: .actor, .ae.org, .airforce, .army, .art, .attorney, .auction, .band, .bar, .best, .br.com, .ceo, .cn.com, .college, .com, .com.de, .com.se, .consulting, .dance, .de.com, .degree, .democrat, .dentist, .design, .engineer, .eu.com, .eus, .feedback, .fm, .forsale, .frl, .fun, .futbol, .gal, .gb.net, .gives, .gr.com, .haus, .hiv, .host, .immobilien, .in.net, .info, .ink, .jp.net, .jpn.com, .kaufen, .kyoto, .lawyer, .love, .market, .me, .mex.com, .moda, .mortgage, .navy, .net, .ninja, .nrw, .online, .ooo, .org, .press, .protection, .pub, .pw, .quebec, .radio.am, .radio.fm, .realty, .rehab, .rent, .republican, .rest, .reviews, .rip, .rocks, .ru.com, .sa.com, .scot, .se.net, .security, .site, .social, .software, .space, .store, .tech, .theatre, .tickets, .top, .uk.com, .uk.net, .us.com, .us.org, .vet, .website, .wiki, .xn--4gbrim, .xn--55qx5d, .xn--5tzm5g, .xn--80asehdb, .xn--80aswg, .xn--c1avg, .xn--czru2d, .xn--i1b6b1a6a2e, .xn--io0a7i, .xn--mk1bu44c, .xn--ngbc5azd, .xn--nqv7f, .xn--t60b56a, .xn--tckwe, .xyz, .za.com</span><span>)</span></td></tr><tr><td>**2. domains**</td><td colspan="3">An array of objects (list of domains to check). </td></tr><tr><td>**2.1 item**</td><td>Set of parameters.</td><td colspan="2">Set of items with parameters</td></tr><tr><td>[2.1.1 extension](https://support.openprovider.eu/hc/en-us/sections/360005841014)</td><td>string</td><td>TLD (e.g. com, tv, it, de etc.)</td><td>[Extension](https://support.openprovider.eu/hc/en-us/sections/360005841014) value requested.</td></tr><tr><td>2.1.2 name</td><td>string</td><td>Name required (e.g. example etc.)</td><td><span>Domain name without an extension.</span></td></tr><tr><td>with\_price</td><td>boolean</td><td>true or false</td><td><span>Indicate whether to include the domain price with domain availability.</span></td></tr><tr><td>with\_whois</td><td>boolean</td><td>true or false</td><td><span>Returns domain WHOIS data.</span></td></tr></tbody></table>

  
</div></details><details><summary>REQUEST EXAMPLE</summary>

<div>```
curl -X POST \<br></br><span>https://api.openprovider.eu/v1beta/domains/check \<br></br></span>-H <span>'Authorization: Bearer 1c26def9e68d********98b5abe264fc' </span>\<br></br>-H <span>'Content-Type: application/json' </span>\<br></br>-d <span>'</span>{<br></br>  <span>"additional_data"</span><span>: </span>{<br></br>    <span>"idn_script"</span><span>: </span><span>"cyrl"<br></br></span>}<span>,<br></br></span><span>"domains"</span><span>: </span>[<br></br>    {<br></br>      <span>"extension"</span><span>: </span><span>"london"</span><span>,<br></br></span><span>"name"</span><span>: </span><span>"test4"<br></br></span>}<br></br>  ]<span>,<br></br></span><span>"with_price"</span><span>: </span><span>false</span><span>,<br></br></span><span>"with_whois"</span><span>: </span><span>false<br></br></span>}'
```

</div></details><details><summary>RESPONSE VALUES</summary>

<div><table><tbody><tr><th>### **Name**

</th><th>### **Type**

</th><th>### **Description**

</th></tr><tr><td>code

</td><td>integer </td><td><span>[API Result with code returned](https://openprovider.help/books/api-plugins/page/api-error-codes).  
0 = Sucess with no errors.</span>

</td></tr><tr><td>**1. data**

</td><td>**An array of values.**</td><td>**An array of data returned per the requested domain name.**</td></tr><tr><td>claim\_key

</td><td>string</td><td>The claim key shown (if presented). </td></tr><tr><td>domain

</td><td>string</td><td>The domain name.</td></tr><tr><td>[is\_premium](https://openprovider.help/books/api-plugins/page/api-guides-glossary#premium_domain)

</td><td>0 or 1</td><td><span>Indicates, whether a domain is [premium](https://openprovider.help/books/api-plugins/page/api-guides-glossary#premium_domain) and has a higher than standard price or not.</span></td></tr><tr><td>[ **1.1 premium** ](https://openprovider.help/books/api-plugins/page/api-guides-glossary#premium_domain)

</td><td>**Set of values.**</td><td>**Return set of values regarding domain [premium](https://openprovider.help/books/api-plugins/page/api-guides-glossary#premium_domain) prices.**</td></tr><tr><td>currency

</td><td>string</td><td>Indicates price currency.</td></tr><tr><td>**1.1.1 price**

</td><td>**Set of values.**</td><td>Return set of values regarding restore price. </td></tr><tr><td>create

</td><td>number (double)</td><td>Price of creation for the premium domain.</td></tr><tr><td>renew

</td><td>number (double)</td><td>Price of renew for the premium domain.</td></tr><tr><td>renewal

</td><td>number (double)</td><td>Price of renewal for the premium domain. </td></tr><tr><td>[ **1.1.1.2 restore** ](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_restore)

</td><td>**An array of strings.**</td><td>**Return set of values regarding domain [restore](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_restore) price.**</td></tr><tr><td>1.1.1.2.1 description

</td><td>string</td><td>Text description.</td></tr><tr><td>1.1.1.2.2 fee

</td><td>number (double)</td><td>Fee value. </td></tr><tr><td>[transfer](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_transfer)

</td><td>number (double) </td><td>The total amount required for domain [transfer](https://openprovider.help/books/api-plugins/page/api-guides-glossary#domain_transfer).</td></tr><tr><td>price\_category

</td><td>string</td><td>Indicates the domain price category if presented.</td></tr><tr><td>price\_currency

</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>**1.2 price**

</td><td>**An array of values.**</td><td>Return set of values regarding domain price. </td></tr><tr><td>**1.2.1 product**

</td><td>**Set of values.**</td><td>**Return set of values regarding product price.**</td></tr><tr><td>1.2.1.1 currency

</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.2.1.2 price

</td><td>number (double)</td><td>Indicates the domain price if presented.</td></tr><tr><td>**1.2.2 reseller**

</td><td>**Set of values.**</td><td>**Return set of values regarding product price applicable for the current reseller.**</td></tr><tr><td>1.2.2.1 currency

</td><td>string</td><td>Indicates the domain price currency if presented.</td></tr><tr><td>1.2.2.2 price

</td><td>number (double) </td><td>Indicates the domain price if presented.</td></tr><tr><td>reason

</td><td>string</td><td><span>Reason for returned availability status.</span></td></tr><tr><td>status

</td><td>string</td><td>Domain name status returned.</td></tr><tr><td>whois

</td><td>string</td><td>Data from WHOIS returned.</td></tr><tr><td>desc

</td><td>string</td><td><span>The description.</span></td></tr><tr><td>maintenance

</td><td>boolean</td><td><span>Indicates that the Openprovider system is temporarily unavailable because of maintenance.</span></td></tr><tr><td>**2. warnings**

</td><td>**An array of values.**</td><td>****An array of warning messages (**<span>Contains warning responses if any</span>).**</td></tr><tr><td>2.1 code

</td><td>integer</td><td><span>Warning code value (digits).</span></td></tr><tr><td>2.2 data

</td><td>string</td><td><span>Data (additional warning description) value returned.</span></td></tr><tr><td>2.3 desc

</td><td>string</td><td>The description value returned.</td></tr></tbody></table>

</div></details></div></div><div><details><summary>RESPONSE EXAMPLE</summary>

<div>```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": {<br></br>"results": [<br></br>{<br></br>"domain": "test4.london",<br></br>"status": "free"<br></br>}<br></br>]<br></br>}<br></br>}
```

</div></details></div><details><summary>Section 5</summary>

**Once we successfully checked the domain(s) availability and parameters, please move to the next stage and [check the domain price](https://openprovider.help/books/api-plugins/page/3-domains-api-how-to-retrieve-domain-price).**

</details></div>

# 20 Domains API: How to delete a domain

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.* *To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

When you delete a domain, you immediately terminate your registration of that domain name. In case of registered domains with status ACT, this will result in a deletion at the registry.

***NB** Keep in mind that not all TLDs have support for a [reactivation option](https://openprovider.help/books/api-plugins/page/19-domains-api-how-to-restore-a-domain) and when available this option can be expensive.*

Openprovider doesn’t provide a refund if you have a remaining registration period for your domain. However, domains with status FAI can be deleted to release the amount from your account balance held in reserve for registration.

Learn more about expiration policies [here](https://openprovider.help/books/quick-start/page/renewal-policies-in-openprovider).

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-twwtijzt.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-del-%7Bbase_url%7D%2Fdomai">```
<span><strong>DEL</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}</span>
```

</div><div id="bkmrk-request-values-name-"><div><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>domain</td><td>string</td><td>**Required.**</td></tr><tr><td>id</td><td>**Required.**</td></tr><tr><td>type</td><td>string</td><td>Optional. Applies only to certain TLDs (e.g. .de)</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X DELETE \<br></br> 'https://api.openprovider.eu/v1beta/domains/12345?domain.name=domain&domain.extension=com' \<br></br> -H 'Authorization: ,Bearer 2f4c1c3a9******15d22b378a64' \
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "status": "ACT"<br></br> },<br></br> "desc": ""<br></br>}
```

</details>## Restoring a deleted domain

<span>Keep in mind that domain deletion has the following consequences:</span>

- <span>Visitors of your domain don’t see your website if one exists  
    </span>
- <span>Email addresses associated with this domain stops working  
    </span>
- <span>DNS stops serving  
    </span>
- <span>Other people can purchase your domain after a [grace period](https://openprovider.help/books/domains/page/life-cycle-of-a-typical-gtld-domain-name)</span>

</div></div></div>

# 21 Domains API: How to update domain's attributes

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.* *To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

If you need to modify contact data of the domain or the nameservers as well as to set or remove a transfer lock or special parameters associated with the domain, you should utilise Update Domain method of the API.

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-skqgrdiw.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-put-%7Bbase_url%7D%2Fdomai">```
<span><strong>PUT</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/{id}</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>domain</td><td>string</td><td>Optional.</td></tr><tr><td>auth\_code</td><td>varchar</td><td>Optional.</td></tr><tr><td>owner\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>admin\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>tech\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>billing\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>reseller\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>ns\_group</td><td>string</td><td>Optional.</td></tr><tr><td>ns\_template\_name</td><td>string</td><td>Optional. N<span>ame of the template to use to automatically create DNS zone for the domain; only applicable if nsGroup is </span>*dns-openprovider*</td></tr><tr><td>ns\_template\_id</td><td>integer</td><td>Optional.</td></tr><tr><td>name\_servers</td><td>dot separated integer</td><td>Required only if nsGroup field is empty</td></tr><tr><td>autorenew</td><td>custom</td><td>*on | off | default* </td></tr><tr><td>is\_dnssec\_enabled</td><td>boolean</td><td>0 (default) or 1 - Only accepted when nameservers of Openprovider are used</td></tr><tr><td>dnssec\_keys</td><td>varchar</td><td>when using your own nameservers</td></tr><tr><td>use\_domicile</td><td>boolean</td><td>0 or 1</td></tr><tr><td><span>accept\_premium\_fee</span></td><td>int or double</td><td>Required in case when domain is premium, value is the price returned in the response for createDomainRequest without acceptPremiumFee</td></tr><tr><td>is\_private\_whois\_enabled </td><td>boolean</td><td>default value is 0</td></tr><tr><td>is\_locked</td><td>boolean</td><td>default value is 0</td></tr></tbody></table>

</details>***NB** The owner, admin and tech handles can be retrieved via the [customers endpoint](https://openprovider.help/books/api-plugins/page/7-customers-api-how-to-get-an-existing-handle) and will be the registered contacts for this domain.*

<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X PUT \<br></br> 'http://api.openprovider.eu/v1beta/domains/123456' \<br></br> -H 'Accept: */*' \<br></br> -H 'Authorization: ,Bearer 2f4c1c3a9******15d22b378a64' \<br></br> -H 'Connection: keep-alive' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br> "admin_handle": "XX123456-XX",<br></br> "auth_code": "2FIXQ63NCQNT",<br></br> "autorenew": "default",<br></br> "comments": "Any comments go",<br></br> "domain": {<br></br> "extension": "com",<br></br> "name": "domain",<br></br> },<br></br> "is_locked": true,<br></br> "is_private_whois_enabled": false,<br></br> "is_spamexperts_enabled": true,<br></br> "ns_template_name": "Default",<br></br> "owner_handle": "XX123456-XX",<br></br> "reseller_handle": "XX123456-XX",<br></br>}
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "data": {<br></br> "id": 11195838,<br></br> "status": "ACT"<br></br> }<br></br>}
```

</details></div></div>

# 22 Domains API: How to trade a domain

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.To get more information about our API in general, please use our[documentation portal](https://support.openprovider.eu/knowledge/revisions/QnJhbmQ6MzI4MDUyNg==/QXJ0aWNsZTozNjAwMjUwOTI1MTQ6MjA=/docs.openprovider.com)as your reference.*

Domain trade is a procedure of changing the current owner of a domain name. Some TLDs allow you to change the owner of a domain name by switching the[handle attribute](https://openprovider.help/books/api-plugins/page/21-domains-api-how-to-update-domains-attributes).

Others, however, do not allow you to explicitly change the owner, a special procedure is required in these cases. You can initiate this procedure either by navigating to[Trade](https://cp.openprovider.eu/domain/trade1.php)page in our control panel or by utilising Trade Domain method.

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-u78u4v9l.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-post%7Bbase_url%7D%2Fdomai">```
<span><strong>POST<a href="http://docs.openprovider.com/#operation/?utm_source=KB-Article&utm_medium=kb&utm_campaign=KB">{base_url}</a></strong>/domains/<span class="diff-added-string">trade</span></span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>domain</td><td>string</td><td>**Required.**</td></tr><tr><td>period</td><td>integer</td><td>**Required.**</td></tr><tr><td>authcode</td><td>varchar</td><td>Optional.</td></tr><tr><td>owner\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>admin\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>tech\_handle</td><td>varchar</td><td>**Required.**</td></tr><tr><td>billing\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>reseller\_handle</td><td>varchar</td><td>Optional.</td></tr><tr><td>ns\_group</td><td>string</td><td>**Required.**</td></tr><tr><td>ns\_template\_name</td><td>string</td><td>Optional. N<span>ame of the template to use to automatically create DNS zone for the domain; only applicable if nsGroup is </span>*dns-openprovider*</td></tr><tr><td>name\_servers</td><td>dot separated integer</td><td>**Required**if only if nsGroup field is empty</td></tr><tr><td>autorenew</td><td>custom</td><td>*on | off | default*</td></tr><tr><td>is\_dnssec\_enabled</td><td>boolean</td><td>0 (default) or 1 - Only accepted when nameservers of Openprovider are used</td></tr><tr><td>dnssec\_keys</td><td>varchar</td><td>when using your own nameservers</td></tr><tr><td>use\_domicile</td><td>boolean</td><td>0 or 1</td></tr><tr><td>at</td><td>timestamp</td><td>*format: yyyy-mm-dd*</td></tr><tr><td>promo\_code</td><td>Optional.</td></tr><tr><td>accept\_premium\_fee</td><td>required in case when domain is premium, value is the price returned in the response for transferDomainRequest without acceptPremiumFee.

</td></tr></tbody></table>

</details><div id="bkmrk-request-examplecurl-"><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> 'http://api.openprovider.eu/v1beta/domains/trade' \<br></br> -H 'Accept: */*' \<br></br> -H 'Authorization: ,Bearer 2f4c1c3a9******15d22b378a64' \<br></br> -H 'Connection: keep-alive' \<br></br> -H 'Content-Type: application/json' \<br></br> -d '{<br></br>"admin_handle": "XX123456-XX",<br></br>"auth_code": "gX38tslFG2#%F%%1",<br></br>"autorenew": "default",<br></br>"domain": {<br></br>"extension": "com",<br></br>"name": "domain",<br></br>},<br></br>"ns_group": "dns-openprovider",<br></br>"owner_handle": "RB919364-BE",<br></br>"period": 1,<br></br>"tech_handle": "XX123456-XX",<br></br>}
```

</details></div><div id="bkmrk-response-example%7B-%22c"><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "creation_date": "2019-04-12 07:28:27",<br></br> "expiration_date": "2020-04-16 13:18:54",<br></br> "renewal_date": "2020-04-16 13:18:54",<br></br> "status": "ACT"<br></br> },<br></br> "desc": ""<br></br>}
```

</details><div id="bkmrk-response-values-name"><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>expiration\_date</td><td>timestamp</td><td>available only in case of a successful real time domain transfer</td></tr></tbody></table>

</details></div></div></div>

# 3 Domains API: How to retrieve domain price

*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.*

*This is the second article in a series in which we are going to cover Domain price retrieval. To get more information about our API in general, please use our [documentation portal](http://docs.openprovider.com/) as your reference.*

<div id="bkmrk-once-you%27ve-ensured-">Once you've ensured that the domain you want to register is free with checkDomainRequest described in our [previous article](https://openprovider.help/books/api-plugins/page/2-domains-api-check-domain), you're ready to move forward.</div><div id="bkmrk-pick-the-domain-regi">Pick the domain registration period and retrieve its price using the API call described below:</div><div id="bkmrk-use-the-endpoint-pat"><div>![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-2yjljqlk.png)Use the endpoint path below. The base URL is determined by both the target environment and the API version.</div><div>```
 <strong>GET <a href="http://docs.openprovider.com/#operation/CheckDomain">{base_url}</a></strong><span>/domains/prices</span>
```

</div></div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<div><table><thead><tr><th>### **Name**

</th><th>### **Type**

</th><th>### **Values**

</th><th>### **Description**

</th></tr></thead><tbody><tr><td>domain.name</td><td> string</td><td>Any domain name</td><td>**Required**

 Domain name for which you're retrieving price

</td></tr><tr><td>domain.extension</td><td>string</td><td>Any extension offered by Openprovider</td><td>**Required**

 Domain extension for which you're retrieving price

</td></tr><tr><td>additional\_data.idn\_script</td><td> string</td><td>The idn script states what language or character set the domain name is in Applicable to: .actor, .ae.org, .airforce, .army, .art, .attorney, .auction, .band, .bar, .best, .br.com, .ceo, .cn.com, .college, .com, .com.de, .com.se, .consulting, .dance, .de.com, .degree, .democrat, .dentist, .design, .engineer, .eu.com, .eus, .feedback, .fm, .forsale, .frl, .fun, .futbol, .gal, .gb.net, .gives, .gr.com, .haus, .hiv, .host, .immobilien, .in.net, .info, .ink, .jp.net, .jpn.com, .kaufen, .kyoto, .lawyer, .love, .market, .me, .mex.com, .moda, .mortgage, .navy, .net, .ninja, .nrw, .online, .ooo, .org, .press, .protection, .pub, .pw, .quebec, .radio.am, .radio.fm, .realty, .rehab, .rent, .republican, .rest, .reviews, .rip, .rocks, .ru.com, .sa.com, .scot, .se.net, .security, .site, .social, .software, .space, .store, .tech, .theatre, .tickets, .top, .uk.com, .uk.net, .us.com, .us.org, .vet, .website, .wiki, .xn--4gbrim, .xn--55qx5d, .xn--5tzm5g, .xn--80asehdb, .xn--80aswg, .xn--c1avg, .xn--czru2d, .xn--i1b6b1a6a2e, .xn--io0a7i, .xn--mk1bu44c, .xn--ngbc5azd, .xn--nqv7f, .xn--t60b56a, .xn--tckwe, .xyz, .za.com.

</td><td> Required for checking domain names containing non-ASCII characters

</td></tr><tr><td> operation</td><td> string</td><td>- create (default)
- transfer
- renew
- restore
- trade
- update

</td><td> Type of domain operation you'd like to retrieve price for

</td></tr><tr><td> period</td><td> numeric</td><td> 1(default) - 10</td><td>Any registration period applicable for the extension. Used in conjunction with create operation only.

</td></tr></tbody></table>

</div></details><details><summary>REQUEST EXAMPLE</summary>

<div>```
curl -X GET \<br></br> 'https://api.openprovider.eu/v1beta/domains/prices?domain.name=example&domain.extension=com&operation=create&period=1' \<br></br> -H 'Authorization: Bearer 677428a4de6e0********0aa0225a1fa'
```

</div></details><details><summary>RESPONSE EXAMPLE</summary>

<div>```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": {<br></br>"price": {<br></br>"product": {<br></br>"price": 9.77,<br></br>"currency": "USD"<br></br>},<br></br>"reseller": {<br></br>"price": 9.77,<br></br>"currency": "USD"<br></br>}<br></br>},<br></br>"is_premium": false,<br></br>"is_promotion": false,<br></br>"tier_price": {<br></br>"product": {<br></br>"price": 10.52<br></br>,"currency": "USD"<br></br>},<br></br>"reseller": {<br></br>"price": 10.52<br></br>,"currency": "USD"<br></br>}<br></br>}<br></br>}<br></br>}
```

</div></details><details><summary>RESPONSE VALUES</summary>

<div><table><thead><tr><th>### **Name**

</th><th>### **Type**

</th><th>### **Values**

</th><th>### **Description**

</th></tr></thead><tbody><tr><td> price</td><td> string

</td><td> array of elements

</td><td>Amounts in product and reseller currency

</td></tr><tr><td>is\_premium</td><td> boolean</td><td> true or false</td><td>Indicates whether a domain is premium and has a higher than standard price or not.</td></tr><tr><td><div><div><span>is\_promotion</span></div></div></td><td>boolean</td><td>true or false</td><td>Indicates whether any promotion is applicable</td></tr></tbody></table>

</div></details></div>**TIP:** It's a best practice to retrieve the domain price before any billable operation you're about to commit - there are many elements involved in domain price calculation, ranging from currency conversion rates to your personal discounts and promotions. The price you've retrieved today may differ from the one you retrieved yesterday.

<div id="bkmrk-using-this-api-call-">Using this API call various extensions and registration periods can be checked and compared, to pick the combination of price and extension that meets your and your customer's demands.</div><div id="bkmrk-once-you%27ve-made-up-">Once you've made up your mind, let's move on and learn about [registration requirements](https://openprovider.help/books/api-plugins/page/4-domains-api-how-to-retrieve-tld-specific-data)</div>

# 4 Domains API: How to retrieve TLD specific data

<span>*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Domains API methods.* </span> *To get more information about our API in general, please use our [documentation portal](http://docs.openprovider.com) as your reference.*

Additional domain fields (also commonly referred to as Extended Attributes) define the information required by domain registries for a given TLD.

While most extensions can be registered with just the basic contact data (company name, contact name, address, telephone number, and e-mail address), several extensions require additional contact information in order to register a domain name. When a domain registry requires the information, a domain name will fail to register successfully unless the values are provided.

Typical information requested by domain registries includes things such as Registrant Legal Type, Registered Entity Name, etc.

![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-2twazdcx.png)<span>Use the endpoint path below. The base URL is determined by both the target environment and the API version.</span>

```
<span><strong>GET</strong> <a href="https://docs.openprovider.com/doc/all">{base_url}</a>/domains/additional-data</span>
```

<div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>domain.extension</td><td>string</td><td>**Required**<span>.</span></td></tr></tbody></table>

</details><div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X GET \<br></br> 'https://api.openprovider.eu/v1beta/domains/additional-data?domain.extension=no' \<br></br> -H 'Authorization: Bearer eca82663f*******76d063d8f6196' \
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": [<br></br>{<br></br>"name": "company_registration_number",<br></br>"description": "Company registration number. Required in case if domain requester is a legal entity",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "company_registration_number",<br></br>"description": "Company registration number. Required in case if domain requester is a legal entity",<br></br>"required": false,<br></br>"type": "text"<br></br>}<br></br>]<br></br>}
```

</details></div></div>

# 5 Domains API: How to retrieve TLD specific customer additional data

<span>*This is a series of articles dedicated to demonstrating how to get acquainted with Openprovider Zones API methods.* </span> *To get more information about our API in general, please use our [documentation portal](http://docs.openprovider.com) as your reference.*

In the previous article, we have covered [additional domain fields](https://openprovider.help/books/api-plugins/page/4-domains-api-how-to-retrieve-tld-specific-data) that are required by some domain registries for a given TLD.

Apart from domain-specific attributes there also can exist customer(handle) specific data. For the very purpose of <span>requesting those fields, one can utilize the following endpoint:</span>

<div id="bkmrk-use-the-endpoint-pat">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-at1iqg2t.png)Use the endpoint path below. The base URL is determined by both the target environment and the API version.  
  
</div><div id="bkmrk-get-%7Bbase_url%7D%2Fdomai">```
<span><strong>GET</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/domains/additional-data/customers</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td class="tg-0lax">domain.name</td><td class="tg-0lax">string</td><td class="tg-0lax"> **Optional.**</td></tr><tr><td class="tg-0lax">domain.extension</td><td class="tg-0lax">string</td><td class="tg-0lax"> **Required.**</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X GET \<br></br> 'https://api.openprovider.eu/v1beta/domains/additional-data/customers/?domain.extension=ru' \<br></br> -H 'Authorization: Bearer eca82663f*******76d063d8f6196'
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": [<br></br>{<br></br>"name": "company_name_cyrillic",<br></br>"description": "Company name in Cyrillic",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "company_name_latin",<br></br>"description": "Company name in Latin",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "first_name_cyrillic",<br></br>"description": "First name in Cyrillic",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "first_name_latin",<br></br>"description": "First name in Latin",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "last_name_cyrillic",<br></br>"description": "Last name in Cyrillic",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "last_name_latin",<br></br>"description": "Last name in Latin",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "middle_name_cyrillic",<br></br>"description": "Middle name in Cyrillic",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "middle_name_latin",<br></br>"description": "Middle name in Latin",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "passport_issue_date",<br></br>"description": "Passport issue date",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "passport_issuer",<br></br>"description": "Passport issuer",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "passport_series",<br></br>"description": "Passport series",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "passport_number",<br></br>"description": "Passport number",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "tax_payer_number",<br></br>"description": "Tax payer number",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "mobile_phone_number",<br></br>"description": "Mobile phone number with SMS",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "postal_address_cyrillic",<br></br>"description": "Postal address",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "legal_address_cyrillic",<br></br>"description": "Legal address",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "birth_date",<br></br>"description": "Birth date is required",<br></br>"required": false,<br></br>"type": "text"<br></br>},<br></br>{<br></br>"name": "is_private_enterpreneur",<br></br>"description": "Whether the contact is the private enterpreneur.",<br></br>"required": false,<br></br>"type": "check"<br></br>}<br></br>]<br></br>}
```

</details><div id="bkmrk-response-values-name"><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>name</td><td>string</td><td>Name of the field</td></tr><tr><td><span>required</span></td><td>Whether the field is mandatory or optional</td></tr><tr><td><span>type</span></td><td>Field type, e.g. text, check, select, multi-select</td></tr><tr><td><span>options</span></td><td><span>Possible values &amp; value descriptions</span></td></tr><tr><td><span>description</span></td><td>Description of the field</td></tr></tbody></table>

</details></div></div></div>

# 6 Customers API: How to create a customer handle

*This is a series of articles dedicated to managing customer objects via Openprovider API.*

*This is a first article in a series in which we are going to cover customer handle creation. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

<span>Customer handles are used throughout the whole system in all product modules (domains, SSL, licenses etc). Every customer created in our system gets a unique identifier or a customer "handle". These handles allow you to reuse recurring customers, meaning you will not have to fill in all the information every time you wish to [register](https://openprovider.help/books/domains/page/domain-registration) a domain name. Another benefit is that you can simply update the customer handle if they ever change their details, this will result in your domain names being updated as well.</span>

## <span>Creating a handle</span>

<span>First, let's focus on adding that handle. While some domain registries require specific data to be provided within the handle object (more on this could be found in [Customer Extension Additional Data](https://doc.openprovider.eu/API_Format_Extensions_Additional_Data_Customer) section of the Openprovider docs) it is important that we have at least the bare minimum of information to be able to register domain names and order SSL certificates. All of the required fields are marked accordingly in the following table.</span>

<div id="bkmrk-use-endpoint-path-be"><div>![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-7quntvox.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div>```
<span><strong>POST</strong> <a href="http://docs.openprovider.com/#operation/">{base_url}</a>/</span><span>customers</span>
```

</div></div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>company\_name</td><td>string</td><td><span>Optional. If customer is a company</span></td></tr><tr><td>[vat](https://doc.openprovider.eu/API_Format_vat)</td><td>string</td><td>Optional.</td></tr><tr><td>[name](https://doc.openprovider.eu/API_Format_Name) </td><td>array with keys: (initials, first\_name, prefix, last\_name, full\_name)</td><td><span>**Required**. Keys 'first\_name' and 'last\_name' are mandatory.</span></td></tr><tr><td>[address](https://doc.openprovider.eu/API_Format_Address)</td><td>array with keys : (street, number, suffix, zipcode, city, country, state)</td><td>**Required.** Keys 'street', 'number', 'zipcode', 'city'<span> and 'country' are mandatory. Some registries also require a valid value for 'state'.</span></td></tr><tr><td>[phone](https://doc.openprovider.eu/API_Format_Phone)</td><td>array with keys: (country\_code, area\_code, subscriber\_number)</td><td>**Required.**</td></tr><tr><td>[fax](https://doc.openprovider.eu/API_Format_Phone)</td><td>array with keys: (country\_code, area\_code, subscriber\_number)</td><td>Optional.</td></tr><tr><td>email</td><td>various</td><td>**Required.**</td></tr><tr><td>additional\_data</td><td>various</td><td>Optional.</td></tr><tr><td>extension\_additional\_data</td><td>various</td><td>Required for some TLDs</td></tr><tr><td>[locale](https://doc.openprovider.eu/API_Format_locale)</td><td>predefined</td><td>Optional.</td></tr><tr><td>[tags](https://doc.openprovider.eu/API_Format_tags)</td><td>array with keys (key, value)</td><td>Optional.</td></tr></tbody></table>

</details>  
<div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X POST \<br></br> http://api.openprovider.eu/v1beta/customers \<br></br> -H 'Authorization: ,Bearer 2831a37fb**********d790b5aac822' \<br></br> -H 'Content-Type: application/json' \<br></br> -H 'cache-control: no-cache' \<br></br> -d '{<br></br> "additional_data": {<br></br> "birth_address": "test street 45",<br></br> "birth_city": "Test city",<br></br> "birth_country": "NL",<br></br> "birth_date": "1970-01-01",<br></br> "birth_state": "Testprovince",<br></br> "birth_zipcode": "123",<br></br> "company_registration_city": "Testcity",<br></br> "company_registration_number": "XX123456789X04",<br></br> "company_registration_subscription_date": "2000-01-01",<br></br> "headquarters_address": "Test street 5",<br></br> "headquarters_city": "Testcity",<br></br> "headquarters_country": "NL",<br></br> "headquarters_state": "Testprovince",<br></br> "headquarters_zipcode": "123",<br></br> "passport_number": "123456",<br></br> "social_security_number": "6543210"<br></br> },<br></br> "address": {<br></br> "city": "Test city",<br></br> "country": "NL",<br></br> "number": "1",<br></br> "state": "Testprovince",<br></br> "street": "Test street",<br></br> "suffix": "A",<br></br> "zipcode": "1236 XX"<br></br> },<br></br> "comments": "",<br></br> "company_name": "Example company",<br></br> "email": "test@mail.tld",<br></br> "extension_additional_data": [<br></br> {<br></br> "data": {<br></br> "admin_type": "1",<br></br> "applicant_purpose": "P3",<br></br> "birth_date": "1970-01-01",<br></br> "company_name_cyrillic": "Example company",<br></br> "company_name_latin": "Example company",<br></br> "company_registration_number": "XX123456789X11",<br></br> "contact_title": "CEO",<br></br> "ens_auth_id": "",<br></br> "ens_key": "",<br></br> "first_name_cyrillic": "Test",<br></br> "first_name_latin": "Test",<br></br> "hr_member": "",<br></br> "industry_class": "19",<br></br> "is_private_enterpreneur": "",<br></br> "last_name_cyrillic": "Person",<br></br> "last_name_latin": "Person",<br></br> "legal_address_cyrillic": "13245 Country, City, street, 2",<br></br> "middle_name_cyrillic": "Nikolaevich",<br></br> "middle_name_latin": "Nikolaevich",<br></br> "mobile_phone_number": "+7 (123) 456-78-90",<br></br> "nexus_category": "C31",<br></br> "org_type": "1",<br></br> "passport_issue_date": "2009-01-11",<br></br> "passport_issuer": "Issuer name",<br></br> "passport_number": "12345678",<br></br> "passport_series": "1234",<br></br> "postal_address_cyrillic": "12345 Country, City, street, 1",<br></br> "social_security_number": "X123455123X",<br></br> "tax_payer_number": "1345678",<br></br> "uin": "12345-6",<br></br> "user_type": "Individual",<br></br> "vat": "XX123456789X12",<br></br> "website": "http://example.com",<br></br> "whois_email": "test@mail.tld"<br></br> },<br></br> "name": "ru"<br></br> }<br></br> ],<br></br> "fax": {<br></br> "area_code": "111",<br></br> "country_code": "+05",<br></br> "subscriber_number": "123456"<br></br> },<br></br> "locale": "nl_NL",<br></br> "name": {<br></br> "first_name": "Test",<br></br> "full_name": "Test Person",<br></br> "initials": "T P",<br></br> "last_name": "Person",<br></br> "prefix": "van der"<br></br> },<br></br> "phone": {<br></br> "area_code": "111",<br></br> "country_code": "+04",<br></br> "subscriber_number": "123456"<br></br> },<br></br> "tags": [<br></br> {<br></br> "key": "customer",<br></br> "value": "VIP"<br></br> }<br></br> ],<br></br> "vat": "NL123456789X11"<br></br>}'
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"data": {<br></br>"handle": "<span>XX123456-XX</span>"<br></br>},<br></br>"desc": ""<br></br>}
```

</details><div id="bkmrk-response-values-name"><div><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>handle</td><td>varchar</td><td><span>Customer unique identifier or handle</span></td></tr></tbody></table>

</details><span>In the [following article](https://openprovider.help/books/api-plugins/page/7-customers-api-how-to-get-an-existing-handle) we'll get into retrieving information from an existing handle.</span>

</div></div></div></div>

# 7 Customers API: How to get an existing handle

*This is a series of articles dedicated to managing customer objects via Openprovider API.*

*This is a second article in a series in which we are going to cover customer handle search. To get more information about our API in general, please use our [documentation portal ](https://docs.openprovider.com)as your reference.*

## <span>Searching for a handle  
</span>![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-rzlx3esx.png)<span>Use the endpoint path below. Base URL is determined by both the target environment and the API version.</span>

<div id="bkmrk-get-%7Bbase_url%7D%2Fcusto">```
<span><strong>GET</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/customer<br></br></span>
```

</div><span>Our API has two methods that can return information about an existing customer object. The first one that we are going to cover is a method that returns a list of customer objects matching particular search criteria.</span>

<div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td><span>handle\_pattern</span></td><td>string</td><td>Full or partial handle name. Wildcard (\*) can be used.</td></tr><tr><td>email\_pattern</td><td>string</td><td>Full or partial email address. Wildcard (\*) can be used.</td></tr><tr><td><span>first\_name\_pattern</span></td><td>string</td><td>Full or partial first name. Wildcard (\*) can be used.</td></tr><tr><td>last\_name\_pattern</td><td>string</td><td>Full or partial last name. Wildcard (\*) can be used.</td></tr><tr><td>company\_name\_pattern</td><td>string</td><td>Full or partial company name. Wildcard (\*) can be used.</td></tr><tr><td><span>comment\_pattern</span></td><td>string</td><td>Full or partial comment value. Wildcard (\*) can be used.</td></tr><tr><td>with\_additional\_data</td><td>boolean</td><td><span>Accepted values ‘true’ or ‘false’ - default value ‘false’</span></td></tr><tr><td>limit</td><td>integer</td><td>default value: 100, maximum value: 1000</td></tr><tr><td>offset</td><td>integer</td><td>default value: 0</td></tr></tbody></table>

</details><div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
<span>curl -X GET \ <br></br>'https://api.openprovider.eu/v1beta/customers?handle_pattern=XX123456-XX&with_additional_data=true' \ <br></br>-H 'Authorization: ,Bearer 2831a37fb8*******90b5aac822' \</span>
```

</details></div><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>handle</td><td>varchar</td><td><span>Customer unique identifier or handle</span></td></tr><tr><td>company\_name</td></tr><tr><td>name</td></tr><tr><td>address</td></tr><tr><td>phone</td></tr><tr><td>fax</td></tr><tr><td>email</td></tr><tr><td>additional\_data</td><td>if withAdditionalData = true</td></tr><tr><td>extension\_additional\_data</td><td>if withAdditionalData = true</td></tr></tbody></table>

</details><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br> "code": 0,<br></br> "data": {<br></br> "results": [<br></br> {<br></br> "additional_data": {<br></br> "birth_address": "test street 45",<br></br> "birth_city": "Test city",<br></br> "birth_country": "NL",<br></br> "birth_date": "1970-01-01",<br></br> "birth_state": "Testprovince",<br></br> "birth_zipcode": "0123",<br></br> "cif_nif_number": "",<br></br> "company_registration_city": "Testcity",<br></br> "company_registration_number": "12345678",<br></br> "company_registration_subscription_date": "2000-01-01",<br></br> "cost_category": "",<br></br> "cost_center": "",<br></br> "headquarters_address": "Test street 5",<br></br> "headquarters_city": "Testcity",<br></br> "headquarters_country": "NL",<br></br> "headquarters_state": "Testprovince",<br></br> "headquarters_zipcode": "0123",<br></br> "internal_reference": "",<br></br> "passport_number": "0123456",<br></br> "project_code": "",<br></br> "purchase_order_number": "",<br></br> "social_security_number": "6543210"<br></br> },<br></br> "address": {<br></br> "city": "Test city",<br></br> "country": "NL",<br></br> "number": "1",<br></br> "state": "Testprovince",<br></br> "street": "Test street",<br></br> "suffix": "A",<br></br> "zipcode": "0123"<br></br> },<br></br> "comments": "",<br></br> "comments_last_changed_at": "",<br></br> "company_name": "",<br></br> "deleted_at": "0000-00-00 00:00:00",<br></br> "email": "test@mail.tld",<br></br> "email_verification_status": "FAI",<br></br> "extension_additional_data": [<br></br> {<br></br> "data": {<br></br> "admin_type": "1",<br></br> "applicant_purpose": "P3",<br></br> "birth_date": "1970-01-01",<br></br> "company_name_cyrillic": "Example company",<br></br> "company_name_latin": "Example company",<br></br> "company_registration_number": "XX123456789X11",<br></br> "contact_title": "CEO",<br></br> "ens_auth_id": "",<br></br> "ens_key": "",<br></br> "first_name_cyrillic": "Test",<br></br> "first_name_latin": "Test",<br></br> "hr_member": "",<br></br> "industry_class": "19",<br></br> "is_private_enterpreneur": "",<br></br> "last_name_cyrillic": "Person",<br></br> "last_name_latin": "Person",<br></br> "legal_address_cyrillic": "13245 Country, City, street, 2",<br></br> "middle_name_cyrillic": "Nikolaevich",<br></br> "middle_name_latin": "Nikolaevich",<br></br> "mobile_phone_number": "+7 (123) 456-78-90",<br></br> "nexus_category": "C31",<br></br> "org_type": "1",<br></br> "passport_issue_date": "2009-01-11",<br></br> "passport_issuer": "Issuer name",<br></br> "passport_number": "12345678",<br></br> "passport_series": "1234",<br></br> "postal_address_cyrillic": "12345 Country, City, street, 1",<br></br> "social_security_number": "X123455123X",<br></br> "tax_payer_number": "1345678",<br></br> "uin": "12345-6",<br></br> "user_type": "Individual",<br></br> "vat": "12345678",<br></br> "website": "http://example.com",<br></br> "whois_email": "test@mail.tld"<br></br> },<br></br> "name": "ru"<br></br> }<br></br> ],<br></br> "gender": "M",<br></br> "handle": "XX123456-XX",<br></br> "id": 12345,<br></br> "is_deleted": false,<br></br> "locale": "nl_NL",<br></br> "name": {<br></br> "first_name": "Test",<br></br> "full_name": "Test Person",<br></br> "initials": "T P",<br></br> "last_name": "Person",<br></br> "prefix": "van der"<br></br> },<br></br> "phone": {<br></br> "area_code": "10",<br></br> "country_code": "+01",<br></br> "subscriber_number": "123456"<br></br> },<br></br> "reseller_id": 5349,<br></br> "tags": [<br></br> {<br></br> "key": "customer",<br></br> "value": "VIP"<br></br> }<br></br> ]<br></br> }<br></br> ],<br></br> "total": 149<br></br> },<br></br> "desc": ""<br></br>}
```

</details></div>```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": {<br></br>"results": [<br></br>{<br></br>"id": 123456789,<br></br>"company_name": "<span>Example company</span>",<br></br>"name": {<br></br>"first_name": "<span>Test</span>",<br></br>"last_name": "<span>Person</span>",<br></br>"full_name": "Test Person"<br></br>},<br></br>"phone": {<br></br>"country_code": "<span>+03</span>",<br></br>"area_code": "<span>111</span>",<br></br>"subscriber_number": "123456"<br></br>},<br></br>"address": {<br></br>"street": "Test street",<br></br>"number": "123",<br></br>"zipcode": "1235 XX",<br></br>"city": "Rotterdam",<br></br>"country": "NL",<br></br>"state": "Test province"<br></br>},<br></br>"email": "test@mail.tld",<br></br>"handle": "XX123456-XX",<br></br>"reseller_id": 12345,<br></br>"locale": "en_001",<br></br>"deleted_at": "0000-00-00 00:00:00",<br></br>"is_deleted": false,<br></br>"email_verification_status": "ACT"<br></br>}<br></br>],<br></br>"total": 1<br></br>}<br></br>}
```

<div><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>handle</td><td>varchar</td><td><span>Customer unique identifier or handle</span></td></tr><tr><td>company\_name</td></tr><tr><td>vat</td></tr><tr><td>name</td></tr><tr><td>address</td></tr><tr><td>phone</td></tr><tr><td>fax</td></tr><tr><td>email</td></tr><tr><td>additional\_data</td><td>if withAdditionalData = true</td></tr><tr><td>extension\_additional\_data</td><td>if withAdditionalData = true</td></tr></tbody></table>

</details>##   
Retrieving a handle

Once we know that a particular user handle exists, we can retrieve its data by calling Get Customer:

## ![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-7ig8yy8l.png)<span>Use the endpoint path below. Base URL is determined by both the target environment and the API version.</span>

<div><span>**GET** [**{base\_url}**](http://docs.openprovider.com/#operation/)/customer/{handle}  
</span></div><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>[handle](https://doc.openprovider.eu/API_Format_Handle)</td><td>string</td><td>Customer unique handle</td></tr><tr><td>with\_additional\_data</td><td>string</td><td><span>Accepted values ‘true’ or ‘false’ - default value ‘false’</span></td></tr></tbody></table>

</details><details><summary>REQUEST EXAMPLE</summary>

</details></div>```
<span>curl -X GET \ <br></br>'https://api.openprovider.eu/v1beta/customers/XX123456-XX?with_additional_data=true' \ <br></br>-H 'Authorization: ,Bearer 2831a37fb8*******90b5aac822' \<br></br></span>
```

<div><details><summary>RESPONSE VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>handle</td><td>varchar</td><td><span>Customer unique identifier or handle</span></td></tr><tr><td>company\_name</td></tr><tr><td>vat</td></tr><tr><td>name</td></tr><tr><td>address</td></tr><tr><td>phone</td></tr><tr><td>fax</td></tr><tr><td>email</td></tr><tr><td>additional\_data</td><td>if withAdditionalData = true</td></tr><tr><td>extension\_additional\_data</td><td>if withAdditionalData = true</td></tr></tbody></table>

</details><details><summary>RESPONSE EXAMPLE</summary>

</details></div>```
{<br></br> "code": 0,<br></br> "desc": "",<br></br> "data": {<br></br> "additional_data": {<br></br> "birth_address": "test street 45",<br></br> "birth_city": "Test city",<br></br> "birth_country": "NL",<br></br> "birth_date": "1970-01-01",<br></br> "birth_state": "Testprovince",<br></br> "birth_zipcode": "0123",<br></br> "cif_nif_number": "",<br></br> "company_registration_city": "Testcity",<br></br> "company_registration_number": "12345678",<br></br> "company_registration_subscription_date": "2000-01-01",<br></br> "cost_category": "",<br></br> "cost_center": "",<br></br> "headquarters_address": "Test street 5",<br></br> "headquarters_city": "Testcity",<br></br> "headquarters_country": "NL",<br></br> "headquarters_state": "Testprovince",<br></br> "headquarters_zipcode": "0123",<br></br> "internal_reference": "",<br></br> "passport_number": "0123456",<br></br> "project_code": "",<br></br> "purchase_order_number": "",<br></br> "social_security_number": "6543210"<br></br> },<br></br> "address": {<br></br> "city": "Test city",<br></br> "country": "NL",<br></br> "number": "1",<br></br> "state": "Testprovince",<br></br> "street": "Test street",<br></br> "suffix": "A",<br></br> "zipcode": "0123"<br></br> },<br></br> "comments": "some comment here",<br></br> "comments_last_changed_at": "2014-05-08 19:04:11",<br></br> "company_name": "Example company",<br></br> "deleted_at": "0000-00-00 00:00:00",<br></br> "email": "test@mail.tld",<br></br> "email_verification_status": "ACT",<br></br> "extension_additional_data": [<br></br> {<br></br> "data": {<br></br> "admin_type": "1",<br></br> "applicant_purpose": "P3",<br></br> "birth_date": "1970-01-01",<br></br> "company_name_cyrillic": "Example company",<br></br> "company_name_latin": "Example company",<br></br> "company_registration_number": "XX123456789X11",<br></br> "contact_title": "CEO",<br></br> "ens_auth_id": "",<br></br> "ens_key": "",<br></br> "first_name_cyrillic": "Test",<br></br> "first_name_latin": "Test",<br></br> "hr_member": "",<br></br> "industry_class": "19",<br></br> "is_private_enterpreneur": "",<br></br> "last_name_cyrillic": "Person",<br></br> "last_name_latin": "Person",<br></br> "legal_address_cyrillic": "13245 Country, City, street, 2",<br></br> "middle_name_cyrillic": "Nikolaevich",<br></br> "middle_name_latin": "Nikolaevich",<br></br> "mobile_phone_number": "+7 (123) 456-78-90",<br></br> "nexus_category": "C31",<br></br> "org_type": "1",<br></br> "passport_issue_date": "2009-01-11",<br></br> "passport_issuer": "Issuer name",<br></br> "passport_number": "12345678",<br></br> "passport_series": "1234",<br></br> "postal_address_cyrillic": "12345 Country, City, street, 1",<br></br> "social_security_number": "X123455123X",<br></br> "tax_payer_number": "1345678",<br></br> "uin": "12345-6",<br></br> "user_type": "Individual",<br></br> "vat": "12345678",<br></br> "website": "http://example.com",<br></br> "whois_email": "test@mail.tld"<br></br> },<br></br> "name": "ru"<br></br> }<br></br> ],<br></br> "fax": {<br></br> "area_code": "001",<br></br> "country_code": "+01",<br></br> "subscriber_number": "123456"<br></br> },<br></br> "gender": "M",<br></br> "handle": "XX123456-XX",<br></br> "id": 5349,<br></br> "inn": "123456789",<br></br> "is_deleted": false,<br></br> "locale": "nl_NL",<br></br> "name": {<br></br> "first_name": "Test",<br></br> "full_name": "Test Person",<br></br> "initials": "T P",<br></br> "last_name": "Person",<br></br> "prefix": "van der"<br></br> },<br></br> "phone": {<br></br> "area_code": "10",<br></br> "country_code": "+01",<br></br> "subscriber_number": "123456"<br></br> },<br></br> "reseller_id": 5349,<br></br> "tags": [<br></br> {<br></br> "key": "customer",<br></br> "value": "VIP"<br></br> }<br></br> ],<br></br> "vat": "XX123456789X11"<br></br> },<br></br> "desc": ""<br></br>}
```

</div>

# 8 Customers API: How to modify a handle

*This is a series of articles dedicated to managing customer objects via Openprovider API.*

*This is a third article in a series in which we are going to cover customer handle modification. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

## <span>Modifying a handle</span>

<span>In order to change data of an existing customer handle one has to utilise Update Customer method. This method takes all the input parameters of [Create Customer method](https://openprovider.help/books/api-plugins/page/6-customers-api-how-to-create-a-customer-handle) with the exception of user's name fields (or company name). These ones have to stay the same. If you need to change the name of a customer, you can do so by cloning an existing handle or creating it anew.</span>

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-fkbqbffn.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-put-%7Bbase_url%7D%2Fcusto">```
<span><strong>PUT</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/customers/{handle}</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>vat</td><td>string</td><td>Optional.</td></tr><tr><td>address</td><td>string</td><td>Optional.</td></tr><tr><td>phone</td><td>various</td><td>Optional.</td></tr><tr><td>fax</td><td>various</td><td>Optional.</td></tr><tr><td>email</td><td>various</td><td>Optional.</td></tr><tr><td>[additional\_data](https://docs.openprovider.com/doc/all#operation/UpdateCustomer)</td><td>various</td><td>Optional.</td></tr><tr><td>[extension\_additional\_data](https://docs.openprovider.com/doc/all#operation/UpdateCustomer)</td><td>various</td><td>Required for some TLDs</td></tr><tr><td>tags</td><td>varchar</td><td>Optional.</td></tr></tbody></table>

</details><div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -X PUT \<br></br>https://api.openprovider.eu/v1beta/customers/XX123456-XX \<br></br> -H 'Authorization: Bearer f106428d5016*********1fd9537823' \<br></br> -H 'Accept: application/json' \<br></br> -H 'Content-Type: application/json' \<br></br> -X POST \<br></br> -d '{<br></br> "additional_data": {<br></br> "birth_address": "test street 45",<br></br> "birth_city": "Test city",<br></br> "birth_country": "NL",<br></br> "birth_date": "1970-01-01",<br></br> "birth_state": "Testprovince",<br></br> "birth_zipcode": "0123",<br></br> "cif_nif_number": "",<br></br> "company_registration_city": "Testcity",<br></br> "company_registration_number": "12345678",<br></br> "company_registration_subscription_date": "2000-01-01",<br></br> "cost_category": "",<br></br> "cost_center": "",<br></br> "headquarters_address": "Test street 5",<br></br> "headquarters_city": "Testcity",<br></br> "headquarters_country": "NL",<br></br> "headquarters_state": "Testprovince",<br></br> "headquarters_zipcode": "0123",<br></br> "internal_reference": "",<br></br> "passport_number": "0123456",<br></br> "project_code": "",<br></br> "purchase_order_number": "",<br></br> "social_security_number": "6543210"<br></br> },<br></br> "address": {<br></br> "city": "Test city",<br></br> "country": "NL",<br></br> "number": "1",<br></br> "state": "Testprovince",<br></br> "street": "Test street",<br></br> "suffix": "A",<br></br> "zipcode": "0123"<br></br> },<br></br> "comments": "Some comment here",<br></br> "email": "test@mail.tld",<br></br> "extension_additional_data": [<br></br> {<br></br> "data": {<br></br> "admin_type": "1",<br></br> "applicant_purpose": "P3",<br></br> "birth_date": "1970-01-01",<br></br> "company_name_cyrillic": "Example company",<br></br> "company_name_latin": "Example company",<br></br> "company_registration_number": "XX123456789X11",<br></br> "contact_title": "CEO",<br></br> "ens_auth_id": "",<br></br> "ens_key": "",<br></br> "first_name_cyrillic": "Test",<br></br> "first_name_latin": "Test",<br></br> "hr_member": "",<br></br> "industry_class": "19",<br></br> "is_private_enterpreneur": "",<br></br> "last_name_cyrillic": "Person",<br></br> "last_name_latin": "Person",<br></br> "legal_address_cyrillic": "13245 Country, City, street, 2",<br></br> "middle_name_cyrillic": "Nikolaevich",<br></br> "middle_name_latin": "Nikolaevich",<br></br> "mobile_phone_number": "+7 (123) 456-78-90",<br></br> "nexus_category": "C31",<br></br> "org_type": "1",<br></br> "passport_issue_date": "2009-01-11",<br></br> "passport_issuer": "Issuer name",<br></br> "passport_number": "12345678",<br></br> "passport_series": "1234",<br></br> "postal_address_cyrillic": "12345 Country, City, street, 1",<br></br> "social_security_number": "X123455123X",<br></br> "tax_payer_number": "1345678",<br></br> "uin": "12345-6",<br></br> "user_type": "Individual",<br></br> "vat": "12345678",<br></br> "website": "http://example.com",<br></br> "whois_email": "test@mail.tld"<br></br> },<br></br> "name": "ru"<br></br> }<br></br> ],<br></br> "fax": {<br></br> "area_code": "001",<br></br> "country_code": "+01",<br></br> "subscriber_number": "123456"<br></br> },<br></br> "handle": "XX123456-XX",<br></br> "locale": "nl_NL",<br></br> "phone": {<br></br> "area_code": "10",<br></br> "country_code": "+01",<br></br> "subscriber_number": "123456"<br></br> },<br></br> "tags": [<br></br> {<br></br> "key": "customer",<br></br> "value": "VIP"<br></br> }<br></br> ],<br></br> "vat": "NL123456789X11"<br></br>}
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"data": {<br></br>"success": true<br></br>},<br></br>"desc": ""<br></br>}
```

</details><div>Depending on the outcome, one will either receive code 0 (in case of success) or an error code with an error message.</div></div></div>

# 9 Customers API: How to delete a handle

*This is a series of articles dedicated to managing customer objects via Openprovider API.*

*This is a fourth article in a series in which we are going to cover customer handle deletion. To get more information about our API in general, please use our [documentation portal](https://docs.openprovider.com) as your reference.*

## <span>Deleting a handle</span>

<span>This article shows how to delete a customer. </span><span>Handle deletion removes an existing customer object and all its records. </span>

***NB** The operation will only succeed if no domains (or other objects) are linked to this customer handle.*

<span>The name of the handle is the only parameter that is required to perform this operation.</span>

<div id="bkmrk-use-endpoint-path-be">![Entering Geo Fence icon](https://openprovider.help/uploads/images/gallery/2026-08/embedded-image-tcczsg4p.png)Use endpoint path below. Base URL is determined by both the target environment and API version.</div><div id="bkmrk-del-%7Bbase_url%7D%2Fcusto">```
<span><strong>DEL</strong> <a href="http://docs.openprovider.com/#operation/"><strong>{base_url}</strong></a>/customers/{handle}</span>
```

</div><div id="bkmrk-request-values-name-"><details><summary>REQUEST VALUES</summary>

<table><tbody><tr><td>**<span>Name</span>**</td><td>**<span>Type</span>**</td><td>**<span>Description</span>**</td></tr><tr><td>[handle](https://doc.openprovider.eu/API_Format_Handle)</td><td>string</td><td>**Required.**</td></tr></tbody></table>

</details><div id="bkmrk-request-examplecurl-"><div><details><summary>REQUEST EXAMPLE</summary>

```
curl -L -X DELETE 'https://api.openprovider.eu/v1beta/customers/TP123456-NL' \<br></br> -H 'Authorization: ,Bearer 811eac2d-******-06aa469aeb61' \
```

</details></div><details><summary>RESPONSE EXAMPLE</summary>

```
{<br></br>"code": 0,<br></br>"desc": "",<br></br>"data": {<br></br>"success": true<br></br>}<br></br>}
```

</details><div>Depending on the outcome, one will either receive code 0 (in case of success) or an error code with an error message.</div></div></div>