Tilda API

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

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

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

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

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

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

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

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

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

Информация о странице для экспорта (+ fullpage html-code)
/v1/getpagefullexport
Адрес всех запросов: https://api.tildacdn.info
В каждом запросе необходимо передавать переменные: publickey и secretkey, и опционально в зависимости от запроса, projectid или pageid
В личном кабинете в настройках у каждого проекта во вкладке "Экспорт" вы можете указать значения путей для изображений (export_imgpath), js (export_jspath) и css (export_csspath) файлов.
Таким образом вы можете задавать относительные или абсолютные пути к файлам, которые будут храниться у вас на сервере, если ваша задача создать полную копию страниц у себя на сервере.
Получить список проектов
URL запроса GET:
https://api.tildacdn.info/v1/getprojectslist/?publickey=00000000000000000000&secretkey=00000000000000000000
URL запроса GET:
https://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": ""
    },
    ...
  ]
}
Получить информацию о проекте
URL запроса GET:
https://api.tildacdn.info/v1/getprojectinfo/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
URL запроса GET:
https://api.tildacdn.info/v1/getprojectinfo/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Ответ в формате JSON:
{
  "status": "FOUND",
  "result": {
    "id": "0",
    "title": "Project title",
    "descr": "",
    "customdomain": "project.ru",
    "export_csspath": "",
    "export_jspath": "",
    "export_imgpath": "",
    "indexpageid": "0",
    "customcsstext": "y",
    "favicon": "",
    "page404id": "0",
    "images": [
      {
        "from": "",
        "to": ""
      }
      ...
    ]
  }
}
Для получения примера конфигурационного файла вашего веб-сервера добавьте к строке запроса параметр webconfig со значением htaccess или nginx.

В случае использования nginx полученный пример необходимо поместить в секцию server конфигурационного файла вашего сервера.
Получить список страниц в проекте
Строка запроса GET:
https://api.tildacdn.info/v1/getpageslist/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Строка запроса GET:
https://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:
https://api.tildacdn.info/v1/getpage/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
https://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",
    "js": [
      ...
    ],
    "css": [
      ...
    ]
  }
}
Получить информацию о странице
+ полный html-код
Строка запроса GET:
https://api.tildacdn.info/v1/getpagefull/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
https://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:
https://api.tildacdn.info/v1/getpageexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
https://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": ""
      }
    ],
    "js": [
      {
        "from": "",
        "to": "",
        "attrs": [
          "async"
        ]
      },
      {
        "from": "",
        "to": "",
        "attrs": [
          "defer"
        ]
      },
      {
        "from": "",
        "to": "",
        "attrs": [
          "nomodule"
        ]
      }
    ],
    "html": "body page html-code with local links to files",
    "filename": "page1001.html"
  }
}
Важно: При вызове данного метода мы рекомендуем дополнительно пересохранять на вашем сервере статические файлы (скрипты и стили) для данной страницы, чтобы держать их в актуальном состоянии. Изменения в данных файлах происходят постоянно, и с помощью API получить информацию, актуальна ли версия файлов, не получится.
Получить информацию о странице для экспорта
+ full page html-code
Строка запроса GET:
https://api.tildacdn.info/v1/getpagefullexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Строка запроса GET:
https://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"
  }
}
Важно: При вызове данного метода мы рекомендуем дополнительно пересохранять на вашем сервере статические файлы (скрипты и стили) для данной страницы, чтобы держать их в актуальном состоянии. Изменения в данных файлах происходят постоянно, и с помощью API получить информацию, актуальна ли версия файлов, не получится.
Webhook (или callback)
Для того, чтобы делать синхронизацию автоматически, вы можете указать адрес скрипта, на который будет отправляться запрос с уведомлением каждый раз, когда вы нажимаете кнопку Publish. Таким образом, вы можете обновлять контент, а также добавлять новые страницы на своем сервере.

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

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

Если сервер Тильды не получит ожидаемый ответ, то будет еще две попытки повторного запроса на ваш сервер (всего 3 запроса).

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

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

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