{"openapi":"3.1.0","info":{"title":"TikTok Downloader API","description":"Ekstrak dan unduh video maupun carousel (photo post) TikTok.\n\nSemua URL yang dikembalikan mengarah ke domain layanan ini dan bisa langsung diunduh (Content-Disposition: attachment). Berkas disimpan sementara sesuai TTL.","version":"1.0.0"},"paths":{"/api/v1/health":{"get":{"summary":"Status layanan","description":"Cek kesehatan: uptime, cache, dan versi mesin ekstraksi.","operationId":"health_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Api V1 Health Get"}}}}}}},"/api/v1/extract":{"get":{"summary":"Ambil video/carousel + tautan siap unduh","description":"Endpoint utama.\n\nDefault (`download=true`): media diunduh ke server ini lalu dibalas sebagai tautan\nmilik domain layanan (langsung mengunduh berkas). Dengan `download=false` hanya\nmetadata + URL CDN TikTok yang dibalas (URL bersifat sementara).","operationId":"extract_api_v1_extract_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","description":"Tautan post TikTok (/video/ atau /photo/)","title":"Url"},"description":"Tautan post TikTok (/video/ atau /photo/)"},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","description":"false = hanya metadata, tanpa mengunduh ke server","default":true,"title":"Download"},"description":"false = hanya metadata, tanpa mengunduh ke server"},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan URL mentah CDN TikTok","default":false,"title":"Include Raw"},"description":"Sertakan URL mentah CDN TikTok"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Extract Api V1 Extract Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fetch":{"get":{"summary":"Unduh ke server, balas tautan siap unduh","description":"Unduh media ke server lalu kembalikan URL milik domain layanan ini.\n\nCocok untuk dipakai di aplikasi lain: tautan hasilnya langsung mengunduh berkas\n(Content-Disposition: attachment), termasuk berkas ZIP untuk carousel.","operationId":"fetch_api_v1_fetch_get","parameters":[{"name":"url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tautan post TikTok","title":"Url"},"description":"Tautan post TikTok"},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan juga URL mentah CDN TikTok","default":false,"title":"Include Raw"},"description":"Sertakan juga URL mentah CDN TikTok"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Fetch Api V1 Fetch Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Unduh ke server, balas tautan siap unduh","description":"Unduh media ke server lalu kembalikan URL milik domain layanan ini.\n\nCocok untuk dipakai di aplikasi lain: tautan hasilnya langsung mengunduh berkas\n(Content-Disposition: attachment), termasuk berkas ZIP untuk carousel.","operationId":"fetch_api_v1_fetch_get","parameters":[{"name":"url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Tautan post TikTok","title":"Url"},"description":"Tautan post TikTok"},{"name":"include_raw","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan juga URL mentah CDN TikTok","default":false,"title":"Include Raw"},"description":"Sertakan juga URL mentah CDN TikTok"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Fetch Api V1 Fetch Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dl/{token}/{nama}":{"get":{"summary":"Unduh berkas hasil","description":"Menyajikan berkas hasil fetch (attachment). Tambahkan ?inline=1 untuk pratinjau.","operationId":"unduh_dl__token___nama__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"nama","in":"path","required":true,"schema":{"type":"string","title":"Nama"}},{"name":"inline","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Inline"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Unduh Dl  Token   Nama  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/zip/{token}":{"get":{"summary":"Unduh semua gambar carousel sebagai ZIP","operationId":"unduh_zip_zip__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Unduh Zip Zip  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thumb/{token}":{"get":{"summary":"Thumbnail/cover hasil","operationId":"thumb_thumb__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Thumb Thumb  Token  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}