{"id":177180,"date":"2026-04-26T21:34:04","date_gmt":"2026-04-26T19:34:04","guid":{"rendered":"https:\/\/europeancourt.org\/en\/services\/echr\/preparation-of-applications\/"},"modified":"2026-04-26T21:27:47","modified_gmt":"2026-04-26T19:27:47","slug":"preparing-applications","status":"publish","type":"page","link":"https:\/\/europeancourt.org\/en\/services\/echr\/preparing-applications\/","title":{"rendered":"Preparing applications to the ECHR"},"content":{"rendered":"<div id=\"ec-preparation-page\" class=\"ec-service-page ec-service-preparation\" data-service=\"preparation\"\n  data-ec-service-page-id=\"177180\"\n  data-ec-service-form-id=\"177179\"\n  data-ec-service-lang=\"en\"\n  data-ec-service-docs-message=\"Attach the documents or paste a cloud-storage link to them.\"\n  data-ec-service-submit-message=\"To send the request, attach the documents or paste a link to them, answer the mandatory questions and fill in any fields that appear.\"\n  data-ec-service-email-message=\"Please fill in this field.\"\n  data-ec-service-invalid-url-message=\"Please correct the link.\"\n  data-ec-service-load-error=\"Error.\">\n<div class=\"ec-service-screen ec-service-screen-1\">\n<div class=\"mywpcf7cf myshow myhide\">The cost of preparing an application to the ECHR depends on the time the work will take. The range is very wide: from a few hundred euros if the work can be done in two or three hours, to 10,000 euros or more if it requires tens of hours. That time is needed to study the documents, identify the key facts, find and analyse all current ECHR case-law on the merits and admissibility of each potential complaint, formulate the complaints on that basis, substantiate each alleged violation, show compliance with the admissibility criteria for each complaint, and then present all of this in the application form briefly, clearly and consistently.<\/div>\n<div class=\"mywpcf7cf myshow myhide\">I can assess how much time your case will require, and therefore the cost of preparing the application, only after seeing the documents. Please provide all decisions you wish to complain about; any other documents recording the measures you wish to complain about; all complaints, appeals or other submissions to the national authorities, including courts, in which those complaints were raised in substance; and all decisions on those complaints, appeals or submissions. If you already have the full case file in electronic form, it is better to send it all at once. Do not worry about sending extra documents or about missing something: if I need additional documents after studying what you send, I will ask you for them.<\/div>\n<div class=\"mywpcf7cf myshow myhide\">I usually reply to a request for the cost of preparing an application within one week of receiving all the necessary documents and information. If the time-limit for applying to the Court expires in the next few days, write to me and ask whether I can consider your request urgently. I promise to reply to that email within 24 hours. If I confirm that I can, and you immediately provide the necessary documents and information, I promise to give you my response to your cost request within the next 48 hours.<\/div>\n<div class=\"mywpcf7cf myshow myhide\">If I conclude that an application to the Court has reasonable prospects, I will tell you the exact cost of preparing it, taking into account the complaints that it makes sense to raise, and will briefly say which complaints it does not make sense to bring. At the same time, I will send you the agreement for the preparation of the application. Payment may be made by bank transfer to my account in Switzerland or by other methods, depending on the country from which payment is made. The application will always be prepared in time to be lodged with the Court within the applicable time-limit. When the work is completed, I will email you the completed application form, the prepared annexes, and instructions on how to print, sign and send everything to the Court correctly. Representation before the Court and any other work on the case are not included in the cost of preparing the application. If I conclude that I can see no reasonable prospects for an application to the Court, I will tell you only that.<\/div>\n<div class=\"mywpcf7cf myshow myhide\">This service is clearly not for you if any of the following statements applies to you:<\/div>\n<ul class=\"myshow myhide ec-service-blocker-list\"><li><label><input type=\"checkbox\" class=\"ec-service-blocker\" \/><span>I already have a completed application form and only need it checked for errors.<\/span><\/label><\/li>\n<li><label><input type=\"checkbox\" class=\"ec-service-blocker\" \/><span>I am not prepared to provide all the necessary documents for the case.<\/span><\/label><\/li>\n<li><label><input type=\"checkbox\" class=\"ec-service-blocker\" \/><span>I expect detailed explanations for each of my complaints, even if there are no reasonable prospects for an application to the Court in relation to that complaint.<\/span><\/label><\/li>\n<li><label><input type=\"checkbox\" class=\"ec-service-blocker\" \/><span>I expect the application to be prepared even if no reasonable prospects for an application to the Court can be identified.<\/span><\/label><\/li>\n<li><label><input type=\"checkbox\" class=\"ec-service-blocker\" \/><span>Given the number of my complaints and the volume of documents I already have in the case, it is obvious to me that preparing the application will require much more time than I am prepared to pay for.<\/span><\/label><\/li>\n<li><label><input type=\"checkbox\" class=\"ec-service-blocker\" \/><span>I can fill in the application form myself in accordance with all the Court\u2019s requirements and set out all key facts, alleged violations and information about compliance with the admissibility criteria for each alleged violation, precisely in line with the case file and the current ECHR case-law applicable to my case.<\/span><\/label><\/li><\/ul>\n<div class=\"checking-load-wrap ec-service-load-wrap\"><div class=\"checking-load-button-row ec-service-load-button-row\"><button type=\"button\" class=\"mybutton blue ec-service-load-button\" id=\"load_ajax_form\" data-ec-service-load=\"preparation\" data-ec-service-form-id=\"177179\" data-blocked-message=\"You cannot continue while any of these statements is ticked. If you ticked one by mistake, untick it.\">Submit documents<\/button><\/div>\n<div id=\"ec-service-load-status\" class=\"checking-load-status ec-service-load-status\" role=\"status\" aria-live=\"polite\"><\/div><\/div>\n<div class=\"mywpcf7cf myshow myhide\"><a class=\"mybutton blue not-in-text-button\" href=\"mailto:oleg.anishchik@europeancourt.org?subject=I%20would%20like%20to%20clarify%20the%20terms\">I would like to clarify the terms<\/a><\/div>\n<div class=\"mywpcf7cf mywpcf7cf-utility ec-service-utility-row\"><div class=\"mybutton red not-in-text-button is-disabled\" aria-disabled=\"true\">Start again<\/div><div class=\"mybutton red not-in-text-button\" onclick=\"window.location.href='mailto:oleg.anishchik@europeancourt.org?subject=Preparing%20applications%20to%20the%20ECHR%3A%20error&amp;body=Error%20description%3A';\">Report an error<\/div><\/div>\n<\/div>\n<div class=\"ec-service-form-shell\"><div id=\"ajax_content\" class=\"ec-service-ajax-content\" data-loaded=\"0\"><\/div><\/div>\n<\/div>\n<script>\n(function(){\n  if (window.ecServicePageRuntimeReady) return;\n  window.ecServicePageRuntimeReady = true;\n\n  function trim(value) {\n    return String(value || '').replace(\/^\\s+|\\s+$\/g, '');\n  }\n\n  function clearNode(node) {\n    if (!node) return;\n    while (node.firstChild) node.removeChild(node.firstChild);\n  }\n\n  function renderStatus(node, message) {\n    if (!node) return;\n    clearNode(node);\n    if (!message) return;\n    var tip = document.createElement('span');\n    tip.className = 'wpcf7-not-valid-tip';\n    tip.textContent = message;\n    node.appendChild(tip);\n  }\n\n  function ajaxUrl() {\n    if (window.wpcf7cf_global_settings) {\n      if (window.wpcf7cf_global_settings.ajaxurl) {\n        return window.wpcf7cf_global_settings.ajaxurl;\n      }\n    }\n    if (window.ajaxurl) return window.ajaxurl;\n    return '\/wp-admin\/admin-ajax.php';\n  }\n\n  function pageRoot(node) {\n    if (!node) return null;\n    return node.closest ? node.closest('.ec-service-page') : null;\n  }\n\n  function loadStatus(root) {\n    return root ? root.querySelector('.ec-service-load-status') : null;\n  }\n\n  function submitStatus(root) {\n    if (!root) return null;\n    var submit = root.querySelector('#ajax_content .wpcf7-submit');\n    if (!submit) return null;\n    var node = root.querySelector('#ajax_content .ec-service-submit-status');\n    if (!node) {\n      node = document.createElement('div');\n      node.className = 'ec-service-submit-status';\n      node.setAttribute('role', 'status');\n      node.setAttribute('aria-live', 'polite');\n      submit.insertAdjacentElement('afterend', node);\n    }\n    return node;\n  }\n\n  function isLoaded(root) {\n    if (!root) return false;\n    var target = root.querySelector('#ajax_content');\n    if (!target) return false;\n    return target.getAttribute('data-loaded') === '1';\n  }\n\n  function syncBlockers(root) {\n    if (!root || isLoaded(root)) return;\n    var button = root.querySelector('[data-ec-service-load]');\n    if (!button || button.getAttribute('aria-busy') === 'true') return;\n    var blocked = !!root.querySelector('.ec-service-blocker:checked');\n    button.disabled = false;\n    button.setAttribute('data-soft-disabled', blocked ? '1' : '0');\n    button.classList.toggle('is-soft-disabled', blocked);\n    if (!blocked) renderStatus(loadStatus(root), '');\n  }\n\n  function scrollToNode(node) {\n    if (!node || !node.getBoundingClientRect) return;\n    var offset = 50;\n    var adminBar = document.getElementById('wpadminbar');\n    if (adminBar) {\n      if (window.getComputedStyle(adminBar).position === 'fixed') {\n        offset += adminBar.offsetHeight || 0;\n      }\n    }\n    var top = node.getBoundingClientRect().top + window.pageYOffset - offset;\n    window.scrollTo({ top: Math.max(top, 0), behavior: 'smooth' });\n  }\n\n  function initCf7(target) {\n    if (!target) return;\n    var form = target.querySelector('.wpcf7-form');\n    if (!form) return;\n    if (window.wpcf7) {\n      if (typeof window.wpcf7.init === 'function') {\n        try { window.wpcf7.init(form); } catch (error) {}\n      }\n    }\n    if (window.jQuery) {\n      if (window.wpcf7cf) {\n        if (typeof window.wpcf7cf.initForm === 'function') {\n          try { window.wpcf7cf.initForm(window.jQuery(form)); } catch (error) {}\n        }\n      }\n    }\n  }\n\n  function hasFiles(root) {\n    if (!root) return false;\n    var input = root.querySelector('#ajax_content input[name=\"multifile-applicationformfiles[]\"]');\n    if (!input) return false;\n    if (!input.files) return false;\n    return !!input.files.length;\n  }\n\n  function hasDocsLink(root) {\n    if (!root) return false;\n    var input = root.querySelector('#ajax_content input[name=\"url-documents-link\"]');\n    if (!input) return false;\n    var value = trim(input.value);\n    if (!value) return false;\n    if (typeof input.checkValidity === 'function') return input.checkValidity();\n    return true;\n  }\n\n  function docsLinkInvalid(root) {\n    if (!root) return false;\n    var input = root.querySelector('#ajax_content input[name=\"url-documents-link\"]');\n    if (!input) return false;\n    if (!trim(input.value)) return false;\n    if (typeof input.checkValidity !== 'function') return false;\n    return !input.checkValidity();\n  }\n\n  function emailOk(root) {\n    if (!root) return false;\n    var input = root.querySelector('#ajax_content input[name=\"your-email\"]');\n    if (!input) return true;\n    var value = trim(input.value);\n    if (!value) return false;\n    if (typeof input.checkValidity === 'function') return input.checkValidity();\n    return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(value);\n  }\n\n  function isVisible(node) {\n    if (!node) return false;\n    var current = node;\n    while (current) {\n      if (current === document.documentElement) break;\n      if (current.nodeType === 1) {\n        if (current.hidden) return false;\n        if (current.classList) {\n          if (current.classList.contains('wpcf7cf-hidden')) return false;\n        }\n        if (current.getAttribute) {\n          if (current.getAttribute('aria-hidden') === 'true') return false;\n        }\n        if (window.getComputedStyle(current).display === 'none') return false;\n      }\n      current = current.parentNode;\n    }\n    return true;\n  }\n\n  function radioGroupOk(root, name) {\n    var items = root ? root.querySelectorAll('#ajax_content input[name=\"' + name + '\"]') : [];\n    if (!items.length) return true;\n    for (var i = 0; i < items.length; i += 1) {\n      if (items[i].checked) return true;\n    }\n    return false;\n  }\n\n  function visibleTextOk(root, name) {\n    if (!root) return true;\n    var node = root.querySelector('#ajax_content [name=\"' + name + '\"]');\n    if (!node || !isVisible(node)) return true;\n    return !!trim(node.value);\n  }\n\n  function answersOk(root) {\n    if (!root || root.getAttribute('data-service') !== 'preparation') return true;\n    if (!radioGroupOk(root, 'prep-claims-scope')) return false;\n    if (!radioGroupOk(root, 'prep-low-chance')) return false;\n    if (!radioGroupOk(root, 'prep-essential-results')) return false;\n    if (!visibleTextOk(root, 'prep-listed-claims-text')) return false;\n    if (!visibleTextOk(root, 'prep-low-chance-claims-text')) return false;\n    if (!visibleTextOk(root, 'prep-essential-results-details')) return false;\n    return true;\n  }\n\n  function markAttention(root, on) {\n    ['input[name=\"multifile-applicationformfiles[]\"]', 'input[name=\"url-documents-link\"]', 'input[name=\"your-email\"]', 'textarea[name=\"prep-listed-claims-text\"]', 'textarea[name=\"prep-low-chance-claims-text\"]', 'textarea[name=\"prep-essential-results-details\"]'].forEach(function(selector) {\n      var node = root ? root.querySelector('#ajax_content ' + selector) : null;\n      if (!node) return;\n      node.classList.toggle('ec-service-needs-attention', !!on);\n      if (on) node.setAttribute('aria-invalid', 'true');\n      else node.removeAttribute('aria-invalid');\n    });\n    ['prep-claims-scope', 'prep-low-chance', 'prep-essential-results'].forEach(function(name) {\n      var wrap = root ? root.querySelector('#ajax_content .wpcf7-form-control-wrap[data-name=\"' + name + '\"]') : null;\n      if (!wrap) return;\n      wrap.classList.toggle('ec-service-needs-attention', !!on);\n    });\n  }\n\n  function formReady(root) {\n    if (!(hasFiles(root) || hasDocsLink(root))) return false;\n    if (!answersOk(root)) return false;\n    return emailOk(root);\n  }\n\n  function syncSubmit(root) {\n    if (!root) return;\n    var submit = root.querySelector('#ajax_content .wpcf7-submit');\n    if (!submit) return;\n    var ready = formReady(root);\n    submit.disabled = false;\n    submit.setAttribute('data-soft-disabled', ready ? '0' : '1');\n    submit.classList.toggle('is-soft-disabled', !ready);\n    if (ready) {\n      renderStatus(submitStatus(root), '');\n      markAttention(root, false);\n    }\n  }\n\n  function missingMessage(root) {\n    if (docsLinkInvalid(root)) {\n      return root.getAttribute('data-ec-service-invalid-url-message') || '';\n    }\n    if (!(hasFiles(root) || hasDocsLink(root)) || !answersOk(root)) {\n      return root.getAttribute('data-ec-service-submit-message') || root.getAttribute('data-ec-service-docs-message') || '';\n    }\n    if (!emailOk(root)) {\n      return root.getAttribute('data-ec-service-email-message') || '';\n    }\n    return '';\n  }\n\n  function blockSubmit(event, root) {\n    if (formReady(root)) return false;\n    event.preventDefault();\n    event.stopPropagation();\n    if (event.stopImmediatePropagation) event.stopImmediatePropagation();\n    markAttention(root, true);\n    renderStatus(submitStatus(root), missingMessage(root));\n    return true;\n  }\n\n  function setupLoadedForm(root) {\n    syncSubmit(root);\n  }\n\n  function loadForm(root, button) {\n    if (!root || !button || root.__ecServiceLoading) return;\n    var target = root.querySelector('#ajax_content');\n    if (!target) return;\n    var formId = root.getAttribute('data-ec-service-form-id') || button.getAttribute('data-ec-service-form-id') || '';\n    var pageId = root.getAttribute('data-ec-service-page-id') || '';\n    var service = root.getAttribute('data-service') || button.getAttribute('data-ec-service-load') || '';\n    var lang = root.getAttribute('data-ec-service-lang') || '';\n    if (!formId || !pageId || !service) {\n      renderStatus(loadStatus(root), root.getAttribute('data-ec-service-load-error') || '');\n      return;\n    }\n    root.__ecServiceLoading = true;\n    root.classList.add('is-form-loading');\n    button.setAttribute('aria-busy', 'true');\n    renderStatus(loadStatus(root), '');\n    var body = new URLSearchParams();\n    body.set('action', 'load_form_ec_service');\n    body.set('service', service);\n    body.set('page_id', pageId);\n    body.set('form_id', formId);\n    body.set('lang', lang);\n    window.fetch(ajaxUrl(), {\n      method: 'POST',\n      credentials: 'same-origin',\n      headers: {'Content-Type': 'application\/x-www-form-urlencoded; charset=UTF-8'},\n      body: body.toString()\n    }).then(function(response) {\n      if (!response.ok) throw new Error('ajax_' + response.status);\n      return response.text();\n    }).then(function(html) {\n      if (!trim(html)) throw new Error('empty_response');\n      target.innerHTML = html;\n      target.setAttribute('data-loaded', '1');\n      root.classList.add('is-form-open');\n      initCf7(target);\n      setupLoadedForm(root);\n      scrollToNode(target);\n    }).catch(function() {\n      renderStatus(loadStatus(root), root.getAttribute('data-ec-service-load-error') || '');\n    }).then(function() {\n      root.__ecServiceLoading = false;\n      root.classList.remove('is-form-loading');\n      button.removeAttribute('aria-busy');\n      syncBlockers(root);\n    });\n  }\n\n  window.ecServiceStartOver = function(event) {\n    var root = pageRoot(event ? event.target : null);\n    if (!root) return;\n    if (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n    var target = root.querySelector('#ajax_content');\n    if (target) {\n      target.innerHTML = '';\n      target.setAttribute('data-loaded', '0');\n    }\n    root.querySelectorAll('.ec-service-blocker').forEach(function(node) { node.checked = false; });\n    root.classList.remove('is-form-open', 'is-form-loading');\n    renderStatus(loadStatus(root), '');\n    syncBlockers(root);\n    scrollToNode(root);\n  };\n\n  document.addEventListener('click', function(event) {\n    var button = null;\n    if (event.target) {\n      if (event.target.closest) {\n        button = event.target.closest('[data-ec-service-load]');\n      }\n    }\n    if (!button) return;\n    var root = pageRoot(button);\n    if (!root) return;\n    event.preventDefault();\n    event.stopPropagation();\n    if (event.stopImmediatePropagation) event.stopImmediatePropagation();\n    if (root.querySelector('.ec-service-blocker:checked')) {\n      renderStatus(loadStatus(root), button.getAttribute('data-blocked-message') || '');\n      syncBlockers(root);\n      return;\n    }\n    loadForm(root, button);\n  }, true);\n\n  document.addEventListener('click', function(event) {\n    var submit = null;\n    if (event.target) {\n      if (event.target.closest) {\n        submit = event.target.closest('.ec-service-page #ajax_content .wpcf7-submit');\n      }\n    }\n    if (!submit) return;\n    blockSubmit(event, pageRoot(submit));\n  }, true);\n\n  document.addEventListener('submit', function(event) {\n    var form = event.target;\n    if (!form || !form.closest) return;\n    var root = form.closest('.ec-service-page');\n    if (root) blockSubmit(event, root);\n  }, true);\n\n  document.addEventListener('change', function(event) {\n    var root = pageRoot(event.target);\n    if (!root) return;\n    if (event.target.matches('.ec-service-blocker')) syncBlockers(root);\n    syncSubmit(root);\n  }, true);\n\n  document.addEventListener('input', function(event) {\n    var root = pageRoot(event.target);\n    if (root) syncSubmit(root);\n  }, true);\n\n  document.querySelectorAll('.ec-service-page').forEach(syncBlockers);\n})();\n<\/script>","protected":false},"excerpt":{"rendered":"The cost of preparing an application to the ECHR depends on the time the work will take. The range is very wide: from a few hundred euros if the work can be done in&#46;&#46;&#46;","protected":false},"author":0,"featured_media":189050,"parent":177152,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-177180","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/pages\/177180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/comments?post=177180"}],"version-history":[{"count":9,"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/pages\/177180\/revisions"}],"predecessor-version":[{"id":225956,"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/pages\/177180\/revisions\/225956"}],"up":[{"embeddable":true,"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/pages\/177152"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/media\/189050"}],"wp:attachment":[{"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/media?parent=177180"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/categories?post=177180"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/europeancourt.org\/en\/wp-json\/wp\/v2\/tags?post=177180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}