Tilda API

Автоматическая интеграция проекта на Тильде с собственным сайтом
Все запросы передаются обычным методом GET. Ответ возвращается в формате JSON.

Успешный ответ:
{
  "status": "FOUND",
  ...
}
Ответ с ошибкой:
{
  "status": "ERROR",
  ...
}
Существует лимит на количество запросов: 150 запросов в час.
API нужен для синхронизации контента, созданного на Тильде, с вашим сайтом. Запрещается обращаться к серверу Тильды и получать данные при каждом заходе посетителя вашего сайта.

Вам нужно копировать полностью весь контент к себе на сервер (включая изображения, скрипты и стили) и уже с него раздавать пользователям. При создании нагрузки из-за постоянного обращения к нашим серверам, ваш аккаунт будет блокирован и функция API будет выключена.

При правильной организации логики синхронизации должно произойти 1-3 обращения, поэтому 150 обращений к серверу в час — более чем достаточно. После синхронизации обращений нет до тех пор, пока вы не внесли изменения на странице, тогда вам нужно будет заново синхронизировать информацию.
Начало работы
Обратите внимание, что взаимодействие с API доступно для тарифа Business. Для начала вам нужно получить publickey и secretkey. Вы можете сделать это в разделе API в своем личном кабинете: Настройки сайта → Экспорт → API.
Список запросов
Список проектов
/v1/getprojectslist

Информация о проекте
/v1/getproject

Информация о проекте для экспорта
/v1/getprojectexport

Список страниц в проекте
/v1/getpageslist

Информация о странице (+ body html-code)
/v1/getpage

Информация о странице (+ fullpage html-code)
/v1/getpagefull

Информация о странице для экспорта (+ body html-code)
/v1/getpageexport

Информация о странице для экспорта (+ fullpage html-code)
/v1/getpagefullexport
Адрес всех запросов: http://api.tildacdn.info
В каждом запросе необходимо передавать переменные: publickey и secretkey, и опционально в зависимости от запроса, projectid или pageid
В личном кабинете в настройках у каждого проекта во вкладке "Export" вы можете указать значения export_csspath, export_jspath, export_imgpath. Таким образом вы можете задавать специальные относительные или абсолютные пути к файлам, которые будут хранится у вас на сервере, если ваша задача создавать полную копию страниц у себя на сервере.
Получить список проектов
URL запроса GET:
http://api.tildacdn.info/v1/getprojectslist/?publickey=00000000000000000000&secretkey=00000000000000000000
URL запроса GET:
http://api.tildacdn.info/v1/getprojectslist/?publickey=00000000000000000000&secretkey=00000000000000000000
Ответ в формате JSON
{
  "status": "FOUND",
  "result": [
    {
      "id": "0",
      "title": "First Project",
      "descr": "Some info"
    },
    {
      "id": "1",
      "title": "Second Project",
      "descr": ""
    },
    ...
  ]
}
Получить информацию о проекте
Строка запроса GET:
http://api.tildacdn.info/v1/getproject/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Строка запроса GET:
http://api.tildacdn.info/v1/getproject/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Ответ в формате JSON
{
  "status": "FOUND",
  "result": {
    "id": "0",
    "title": "Project name",
    "descr": "some description",
    "customdomain": "",
    "css": [
      "http://tilda.ws/css/tilda-grid-2.0.css",
      "http://tilda.ws/project0/tilda-blocks-2.0.css"
    ],
    "js": [
      "http://code.jquery.com/jquery-1.10.2.min.js",
      "http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js",
      "http://tilda.ws/js/jquery.videoBG.js",
      "http://tilda.ws/js/jquery.parallax-1.1.3.js",
      "http://tilda.ws/js/tilda-scripts-2.0.js"
    ]
  }
}
Получить информацию о проекте для экспорта
Строка запроса GET:
http://api.tildacdn.info/v1/getprojectexport/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Строка запроса GET:
http://api.tildacdn.info/v1/getprojectexport/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Ответ в формате JSON
{
  "status": "FOUND",
  "result": {
    "id": "0",
    "title": "Project name",
    "descr": "some description",
    "customdomain": "",
    "export_csspath": "",
    "export_jspath": "",
    "export_imgpath": "",
    "indexpageid": "",
    "css": [
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      }
    ],
    "js": [
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      }
    ],
    "images": [
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      }
    ],
    "htaccess": ""
  }
}
Получить список страниц в проекте
Строка запроса GET:
http://api.tildacdn.info/v1/getpageslist/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Строка запроса GET:
http://api.tildacdn.info/v1/getpageslist/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Ответ в формате JSON
{
  "status": "FOUND",
  "result": [
    {
      "id": "1001",
      "projectid": "0",
      "title": "Page title first",
      "descr": "",
      "img": "",
      "featureimg": "",
      "alias": "",
      "date": "2014-05-16 14:45:53",
      "sort": "80",
      "published": "1419702868",
      "filename": "page1001.html"
    },
    {
      "id": "1002",
      "projectid": "0",
      "title": "Page title second",
      "descr": "",
      "img": "",
      "featureimg": "",
      "alias": "",
      "date": "2014-05-17 10:50:00",
      "sort": "90",
      "published": "1419702277",
      "filename": "page1002.html"
    },
    ...
  ]
}
Получить информацию о странице
+ body html-код
Строка запроса GET:
http://api.tildacdn.info/v1/getpage/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
http://api.tildacdn.info/v1/getpage/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Ответ в формате JSON
{
  "status": "FOUND",
  "result": {
    "id": "1001",
    "projectid": "0",
    "title": "Page title",
    "descr": "",
    "img": "",
    "featureimg": "",
    "alias": "",
    "date": "2014-05-16 14:45:53",
    "sort": "80",
    "published": "1419702868",
    "html": "some html page code",
    "filename": "page1001.html"
  }
}
Получить информацию о странице
+ полный html-код
Строка запроса GET:
http://api.tildacdn.info/v1/getpagefull/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
http://api.tildacdn.info/v1/getpagefull/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Ответ в формате JSON
{
  "status": "FOUND",
  "result": {
    "id": "1001",
    "projectid": "0",
    "title": "Page title",
    "descr": "",
    "img": "",
    "featureimg": "",
    "alias": "",
    "date": "2014-05-16 14:45:53",
    "sort": "80",
    "published": "1419702868",
    "html": "some html page code",
    "filename": "page1001.html"
  }
}
Получить информацию о странице для экспорта
+ body page html-code
Строка запроса GET:
http://api.tildacdn.info/v1/getpageexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
http://api.tildacdn.info/v1/getpageexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Ответ в формате JSON
{
  "status": "FOUND",
  "result": {
    "id": "1001",
    "projectid": "0",
    "title": "Page title",
    "descr": "",
    "img": "",
    "featureimg": "",
    "alias": "",
    "date": "2014-05-16 14:45:53",
    "sort": "80",
    "published": "1419702868",
    "images": [
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      }
    ],
    "html": "body page html-code with local links to files",
    "filename": "page1001.html"
  }
}
Получить информацию о странице для экспорта
+ full page html-code
Строка запроса GET:
http://api.tildacdn.info/v1/getpagefullexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
http://api.tildacdn.info/v1/getpagefullexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Ответ в формате JSON
{
  "status": "FOUND",
  "result": {
    "id": "1001",
    "projectid": "0",
    "title": "Page title",
    "descr": "",
    "img": "",
    "featureimg": "",
    "alias": "",
    "date": "2014-05-16 14:45:53",
    "sort": "80",
    "published": "1419702868",
    "images": [
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      },
      {
        "from": "",
        "to": ""
      }
    ],
    "html": "full page html-code with local links to files",
    "filename": "page1001.html"
  }
}
Webhook (или callback)
Для того, чтобы делать синхронизацию автоматически, вы можете указать адрес скрипта, на который будет присылаться запрос с уведомлением каждый раз, когда вы нажимаете кнопку Publish. Таким образом, вы можете обновлять контент, а также добавлять новые страницы на своем сервере.

Webhook можно указать в разделе API вашего проекта: Настройки сайта → Экспорт → API:
Уведомление присылается методом GET.
Параметры: pageid, projectid, published, publickey

В ответ вы должны подтвердить, что получили запрос.
Положительный ответ: ok
(В php - просто выведите echo"ok";)

Если Тильда не получит ответ, то будет три попытки повторного запроса на ваш сервер.

Запрос может вызываться не сразу, а с задержкой от 1 до 20 минут после публикации. Поэтому, если запрос не пришел сразу, то нужно убедиться, что он не пришел в указанное время.
Важно: Время максимального ожидания ответа от вашего сервера —5 секунд. Если ответ не получен, соединение обрывается. Поэтому вы должны только зарегистрировать у себя это уведомление, а потом, через cron, сделать синхронизацию. Так как обычно, если у вас на странице много картинок, этого времени недостаточно.

how to
Примерные сценарии использования
Многие разработчики используют Tilda API в двух случаях: когда вам нужно автоматизировать процесс экспорта, сохраняя у себя на сервере полностью все файлы проекта, и для интеграции страниц, созданных на Тильде, со своими шаблонами сайта.
Экспорт всех страниц в проекте
Наша задача — сохранить полностью локально на нашем сервере проект, который опубликован на Тильде в нашем аккаунте.
  • В личном кабинете в настройках проекта во вкладке export прописываем пути для картинок, js и css файлов. Например /img/ /js/ и /css/
  • Запоминаем projectid нужного нам проекта
  • У себя на сервере создаем скрипт, который будет выполнять запросы к API, создавать файлы и записывать в них информацию
  • Создаем папки на сервере (js,css,images), куда будем копировать файлы
  1. Получаем информацию по нужному нам проекту для экспорта. Запрос getprojectexport.
  2. Проходим циклом массивы css,js,images, которые мы получили из запроса. В них хранится список файлов. from — адрес файла источника, to — его локальное имя, под которым его нужно сохранить. Копируем нужные файлы js, css, images в нужные нам места. Эти файлы общие для всех страниц в проекте. Создаем файл .htaccess и записываем в него содержимое из переменной htaccess.
  3. Получаем список всех страниц в нашем проекте. Запрос getpageslist.
  4. Циклом проходим по полученному списку страниц. В цикле:
  5. Для каждой страницы получаем информацию для экспорта. Запрос getpagefullexport.
  6. Сохраняем в нужное место из массива images изображения, которые используются на странице.
  7. Создаем файл с именем страницы (переменная filename) и записываем в нее содержимое переменной html.

Если ваша задача — интегрировать страницы с Тильды в ваш шаблон (где уже есть header, menu, footer и т.д.), то порядок действий тот же, только используйте запрос getpageexport. Он возвращает body html-код, который вы можете вставлять в зону для контента в вашем шаблоне.
Интеграция без копирования изображений и js, css файлов
Если у вас не высоконагруженный проект и вы не хотите разбираться с копированием файлов — используйте запрос getpage, который возвращает body html-код. Изображения будут грузиться с сервера Тильды. Главное, не забудьте в вашем шаблоне подключить css и js файлы. Их список можно получить, выполнив запрос getproject.
Простой запрос на примере PHP:
$result = file_get_contents('http://api.tildacdn.info/v1/getprojectexport/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0');
$project = json_decode($result, true);
print_r($project);
В соответствии с Пользовательским соглашением, при использовании функции экспорта через API вам необходимо самостоятельно указать идентификатор разработчика с ссылкой на принадлежность базовых ресурсов Администрации.
Made on
Tilda