Tilda API

Automatyczna integracja projektu Tilda z własną stroną internetową
Wszystkie żądania są wysyłane przy użyciu metody GET, a odpowiedź jest zwracana w formacie JSON.

Pomyślna odpowiedź to:
{
  "status": "FOUND",
  ...
}
Odpowiedź na błąd to:
{
  "status": "ERROR",
  ...
}
Liczba zgłoszeń jest ograniczona: 150 na godzinę.
API służy do synchronizacji treści utworzonych na stronie Tilda z witryną użytkownika. Zabronione jest żądanie od serwera Tilda pobierania danych dla każdej wizyty użytkownika w witrynie.

Cała zawartość musi zostać zapisana na serwerze (w tym obrazy, skrypty i style), zanim będzie można ją udostępnić użytkownikom. Jeśli tworzysz obciążenie poprzez ciągłe wysyłanie żądań do serwerów API Tilda , Twoje konto może zostać zablokowane, a funkcja API zostanie wyłączona.

Jeśli algorytm synchronizacji jest dobrze zorganizowany, powinno być 1-3 żądań, dlatego 150 żądań do serwera na godzinę jest więcej niż wystarczające. Po synchronizacji nie powinno być żadnych żądań, dopóki nie zmienisz czegoś na stronie, w takim przypadku będziesz musiał ponownie zsynchronizować informacje.
Jak zacząć
Należy pamiętać, że funkcja API jest dostępna tylko dla subskrybentów planu biznesowego Tilda . Na początek należy uzyskać klucz publiczny i klucz tajny. Można je uzyskać w sekcji API na stronie Tilda: Ustawienia witryny → Eksport → Integracja API.
Lista żądań
Lista projektów
/v1/getprojectslist

Informacje o projekcie
/v1/getprojectinfo

Lista stron projektu
/v1/getpageslist

Informacje o stronie (+ kod html treści)
/v1/getpage

Informacje o stronie (+ kod html pełnej strony)
/v1/getpagefull

Informacje o stronie do eksportu (+ body html-code)
/v1/getpageexport

Pełne informacje o stronie do eksportu (+ kod html pełnej strony)
/v1/getpagefullexport
Adresy URL dla wszystkich żądań: https://api.tildacdn.info
W każdym żądaniu należy przesłać zmienne: publickey i secretkey oraz opcjonalnie, w zależności od żądania, projectid lub pageid.
Możesz ustawić wartości ścieżek dla obrazów(export_imgpath), plików JS(export_jspath) i plików CSS(export_csspath) w zakładce Export w Site Settings każdego projektu.
Dlatego możesz określić względne lub bezwzględne ścieżki do plików, które będą przechowywane na serwerze, jeśli chcesz utworzyć dokładne kopie stron na swoim serwerze.
Pobieranie listy projektów
GET Request URL:
https://api.tildacdn.info/v1/getprojectslist/?publickey=00000000000000000000&secretkey=00000000000000000000
Adres URL żądania GET:
https://api.tildacdn.info/v1/getprojectslist/?publickey=00000000000000000000&secretkey=00000000000000000000
Odpowiedź w formacie JSON:
{
  "status": "FOUND",
  "result": [
    {
      "id": "0",
      "title": "First Project",
      "descr": "Some info"
    },
    {
      "id": "1",
      "title": "Second Project",
      "descr": ""
    },
    ...
  ]
}
Uzyskiwanie informacji o projekcie:
GET Request URL:
https://api.tildacdn.info/v1/getprojectinfo/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Adres URL żądania GET:
https://api.tildacdn.info/v1/getprojectinfo/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Odpowiedź w formacie JSON:
{
  "status": "FOUND",
  "result": {
    "id": "0",
    "title": "Project title",
    "descr": "",
    "customdomain": "project.com",
    "export_csspath": "",
    "export_jspath": "",
    "export_imgpath": "",
    "indexpageid": "0",
    "customcsstext": "y",
    "favicon": "",
    "page404id": "0",
    "images": [
      {
        "from": "",
        "to": ""
      }
      ...
    ]
  }
}
Aby uzyskać próbkę pliku konfiguracyjnego serwera WWW, dodaj parametr webconfig z wartością htaccess lub nginx do adresu URL żądania.

Jeśli używasz nginx, musisz dodać otrzymaną próbkę do sekcji serwera pliku konfiguracyjnego serwera WWW.
Pobieranie listy stron projektu
GET Request URL:
https://api.tildacdn.info/v1/getpageslist/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Adres URL żądania GET:
https://api.tildacdn.info/v1/getpageslist/?publickey=00000000000000000000&secretkey=00000000000000000000&projectid=0
Odpowiedź w formacie 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"
    },
    ...
  ]
}
Pobieranie informacji o stronie
+ kod HTML treści
GET Request URL:
https://api.tildacdn.info/v1/getpage/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Adres URL żądania GET:
https://api.tildacdn.info/v1/getpage/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Odpowiedź w formacie 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": [
      ...
    ]
  }
}
Pobieranie informacji o stronie
+ pełny kod HTML
GET Request URL:
https://api.tildacdn.info/v1/getpagefull/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Adres URL żądania GET:
https://api.tildacdn.info/v1/getpagefull/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Odpowiedź w formacie 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"
  }
}
Pobieranie informacji o stronie do eksportu
+ kod HTML strony głównej
GET Request URL:
https://api.tildacdn.info/v1/getpageexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Adres URL żądania GET:
https://api.tildacdn.info/v1/getpageexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Odpowiedź w formacie 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"
  }
}
Ważne: Zalecamy pobieranie i aktualizowanie plików statycznych strony (skryptów i stylów) za każdym razem, gdy korzystasz z tego żądania. Pliki te ulegają ciągłym zmianom i nie można sprawdzić, czy są one aktualizowane za pośrednictwem interfejsu API.
Pobieranie informacji o stronie do eksportu
+ pełny kod HTML strony
GET Request URL:
https://api.tildacdn.info/v1/getpagefullexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Adres URL żądania GET:
https://api.tildacdn.info/v1/getpagefullexport/?publickey=00000000000000000000&secretkey=00000000000000000000&pageid=1001
Odpowiedź w formacie 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"
  }
}
Ważne: Zalecamy pobieranie i aktualizowanie plików statycznych strony (skryptów i stylów) za każdym razem, gdy korzystasz z tego żądania. Pliki te ulegają ciągłym zmianom i nie można sprawdzić, czy są one aktualizowane za pośrednictwem interfejsu API.
Webhook (lub wywołanie zwrotne)
Synchronizacja może być wykonywana automatycznie. W tym celu należy określić adres URL skryptu, na który zostanie wysłane żądanie z powiadomieniem po każdym kliknięciu przycisku "Opublikuj". W ten sposób możesz aktualizować zawartość, a także dodawać nowe strony na swoim serwerze.

Możesz określić link do webhooka w sekcji API swojego projektu: Ustawienia witryny → Eksport → Integracja API:
Powiadomienie jest wysyłane przy użyciu metody GET .
Parametry: pageid, projectid, published, publickey

Twój webhook musi potwierdzić, że żądanie zostało odebrane. Oczekiwaną odpowiedzią na udane żądanie jest "ok"
(W PHP po prostu echo "ok";)

Jeśli serwer Tilda nie otrzyma oczekiwanej odpowiedzi, zostaną podjęte 2 kolejne próby powtórzenia żądania do twojego serwera (w sumie 3 żądania).

Żądanie może zostać wysłane nie od razu, ale z opóźnieniem od 1 do 20 minut po opublikowaniu strony. Dlatego jeśli żądanie nie nadeszło od razu, należy sprawdzić, czy nie nadeszło w określonym czasie.
Ważne: Maksymalny czas oczekiwania na odpowiedź z serwera wynosi 5 sekund. Jeśli odpowiedź nie zostanie odebrana, połączenie zostanie przerwane. Dlatego należy zapisać to powiadomienie, a następnie wykonać synchronizację - na przykład za pomocą crona. Zwykle, jeśli na stronie znajduje się wiele obrazów, czas ten nie jest wystarczający.

jak
Przykłady scenariuszy użycia
Istnieją dwa typowe scenariusze korzystania z interfejsu API Tilda : Jeśli potrzebujesz zautomatyzować eksportowanie i zapisywanie wszystkich plików projektu na swoim serwerze oraz jeśli potrzebujesz zintegrować strony utworzone na Tilda ze swoimi szablonami stron internetowych.
Jak wyeksportować wszystkie strony w projekcie
Naszym celem jest zapisanie projektu opublikowanego na naszym koncie Tilda na naszym lokalnym serwerze.
  • Na karcie Eksport w Ustawieniach witryny określ ścieżki do obrazów, plików JS i plików CSS, takich jak /images, /js i /css;
  • Zapamiętaj identyfikator projektu, którego potrzebujesz;
  • Utwórz skrypt na swoim serwerze - będzie on wysyłał żądania do API, tworzył pliki i zapisywał informacje w tych plikach;
  • Utwórz foldery na serwerze, do których będziesz kopiować pliki (obrazy, js, css).
  1. Uzyskaj informacje o projekcie, którego potrzebujesz, wysyłając żądanie getprojectinfo.
  2. Przeprowadź pętlę przez tablicę obrazów otrzymaną w odpowiedzi na żądanie. Znajduje się w niej lista plików. Adres źródłowy pliku można znaleźć w zmiennej from , a nazwę lokalną, której należy użyć do zapisania pliku, w zmiennej to. Skopiuj pliki tam, gdzie potrzebujesz. Pliki te są wspólne dla wszystkich stron w projekcie.
  3. Jeśli dodałeś parametr webconfig do poprzedniego żądania, musisz albo utworzyć plik.htaccess i wypełnić go wartością zmiennej webconfig, albo zapisać tę wartość w sekcji serwera w pliku konfiguracyjnym serwera nginx.
  4. Uzyskaj listę wszystkich stron w naszym projekcie, wysyłając żądanie getpageslist.
  5. Przejrzyj w pętli otrzymaną listę stron. Dla każdej strony:
  • Uzyskaj informacje o stronie do eksportu, wysyłając żądanie getpagefullexport;
  • Zapisywanie obrazów, skryptów i stylów używanych na stronie z tablic images, js i css na serwerze;
  • Utwórz nowy plik strony (używając nazwy ze zmiennej filename ) i wypełnij go wartością zmiennej html.

Jeśli Twoim celem jest zintegrowanie stron z Tilda z szablonem (który ma już nagłówek, menu, stopkę itp.), wykonaj te same kroki, ale użyj opcji getpageexport request. Zwraca kod HTML treści, który można wkleić do obszaru treści szablonu. Należy pamiętać, że w tym przypadku należy ręcznie dodać skrypty i style do szablonu.
Integracja bez kopiowania obrazów i plików JS/CSS

Jeśli projekt nie jest mocno obciążony i nie chcesz zapisywać plików statycznych na serwerze, użyj żądania getpage, które zwraca kod HTML treści. Obrazy zostaną załadowane z serwera Tilda . Najważniejsze jest, aby pamiętać o dodaniu plików JS i CSS do szablonu. Lista tych plików jest zwracana w zmiennych js i css odpowiedzi na żądanie.

Przykład prostego żądania przy użyciu 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);
Zgodnie z Warunkami korzystania z usługi Tilda, jeśli korzystasz z funkcji eksportu API, musisz podać identyfikator "Made on Tilda" z linkiem do https://tilda.cc jako źródło na każdej eksportowanej stronie.
Wykonane na
Tilda