///
This document provides a reference for the FastAPI endpoints exposed by the Infinite Image Browsing backend. The base path for the API is typically `/infinite_image_browsing` unless configured otherwi
16 views
~16 views from guests
Guest views are estimated from total page views. These include anonymous visitors and users who weren't logged in when they viewed the page.
This document provides a reference for the FastAPI endpoints exposed by the Infinite Image Browsing backend. The base path for the API is typically /infinite_image_browsing unless configured otherwise. Database-related endpoints are under /infinite_image_browsing/db.
Many API endpoints utilize Pydantic models for structured data exchange.
AppFeSettingReq:
name: strvalue: strAppFeSettingDelReq:
name: strDeleteFilesReq:
file_paths: List[str]CreateFoldersReq:
dest_folder: strMoveFilesReq:
file_paths: List[str]dest: strcreate_dest_folder: Optional[bool] = FalsePathsReq:
paths: List[str]SetTargetFrameAsCoverReq:
base64_img: strpath: strupdated_time: strGeninfoBatchReq:
paths: List[str]CheckPathExistsReq:
paths: List[str]PackReq:
paths: List[str]compress: boolpack_only: boolOpenFolderReq:
path: strUpdateTagReq:
id: intcolor: strToggleCustomTagToImgReq:
img_path: strtag_id: intBatchUpdateImageReq:
img_paths: List[str]action: str (e.g., "add", "remove")tag_id: intAddCustomTagReq:
tag_name: strRenameFileReq:
path: strname: strRemoveCustomTagReq:
tag_id: intRemoveCustomTagFromReq:
img_id: inttag_id: strExtraPathModel:
path: strtypes: List[str] (e.g., "scanned", "walk")alias: str = ''ExtraPathAliasModel:
path: stralias: strAIChatRequest:
messages: List[dict]temperature: Optional[float] = 0.7max_tokens: Optional[int] = Nonestream: Optional[bool] = FalseAIChatResponse:
id: strobject: strcreated: intmodel: strchoices: List[dict] (contains message: AIChatMessage, finish_reason: str)usage: dict (contains prompt_tokens, completion_tokens, total_tokens)SearchBySubstrReq:
surstr: strcursor: strregexp: strpath_only: Optional[bool] = Falsefolder_paths: Optional[List[str]] = Nonesize: Optional[int] = 200media_type: Optional[str] = None (e.g., "all", "image", "video")MatchImagesByTagsReq:
and_tags: List[int]or_tags: List[int]not_tags: List[int]cursor: strfolder_paths: Optional[List[str]] = Nonesize: Optional[int] = 200random_sort: Optional[bool] = FalseBuildIibOutputEmbeddingReq:
folder: Optional[str] = Nonemodel: Optional[str] = Noneforce: Optional[bool] = Falsebatch_size: Optional[int] = 64max_chars: Optional[int] = 4000ClusterIibOutputReq:
folder: Optional[str] = Nonefolder_paths: Optional[List[str]] = Nonemodel: Optional[str] = Noneforce_embed: Optional[bool] = Falsethreshold: Optional[float] = 0.90batch_size: Optional[int] = 64max_chars: Optional[int] = 4000min_cluster_size: Optional[int] = 2title_model: Optional[str] = Noneassign_noise_threshold: Optional[float] = Noneuse_title_cache: Optional[bool] = Trueforce_title: Optional[bool] = Falselang: Optional[str] = NonePromptSearchReq:
query: strfolder: Optional[str] = Nonefolder_paths: Optional[List[str]] = Nonemodel: Optional[str] = Nonetop_k: Optional[int] = 50min_score: Optional[float] = 0.0ensure_embed: Optional[bool] = Truemax_chars: Optional[int] = 4000TagGraphReq:
folder_paths: List[str]lang: Optional[str] = "en"TagGraphResp:
layers: List[GraphLayer]links: List[GraphLink]stats: dictGraphLayer:
level: intname: strnodes: List[LayerNode]LayerNode:
id: strlabel: strsize: floatmetadata: Optional[dict]GraphLink:
source: strtarget: strweight: floatClusterPathsReq:
topic_cluster_cache_key: strcluster_id: str/infinite_image_browsing)/infinite_image_browsing/hello
str/infinite_image_browsing/global_setting
Dict[str, Any] (e.g., {"global_setting": {...}, "cwd": "...", "is_win": true, ...})/infinite_image_browsing/app_fe_setting
AppFeSettingReq/infinite_image_browsing/app_fe_setting
AppFeSettingDelReq/infinite_image_browsing/version
Dict[str, Any]/infinite_image_browsing/delete_files
DeleteFilesReq{"ok": True}/infinite_image_browsing/mkdirs
CreateFoldersReq/infinite_image_browsing/copy_files
MoveFilesReq/infinite_image_browsing/move_files
MoveFilesReq/infinite_image_browsing/files
folder_path: strDict[str, List[FileInfoDict]]/infinite_image_browsing/batch_get_files_info
PathsReqDict[str, FileInfoDict]/infinite_image_browsing/image-thumbnail
path: strt: strsize: str = "256x256"FileResponse (image/webp)/infinite_image_browsing/file
path: strt: strdisposition: Optional[str] = NoneFileResponse/infinite_image_browsing/stream_video
path: strrequest: RequestStreamingResponse/infinite_image_browsing/video_cover
path: strmt: strFileResponse (image/webp)/infinite_image_browsing/set_target_frame_as_video_cover
SetTargetFrameAsCoverReqFileResponse (image/webp)/infinite_image_browsing/send_img_path
path: str/infinite_image_browsing/gen_info_completed
bool/infinite_image_browsing/image_geninfo
path: strstr/infinite_image_browsing/image_geninfo_batch
GeninfoBatchReqDict[str, str]/infinite_image_browsing/check_path_exists
CheckPathExistsReqDict[str, bool]/infinite_image_browsing
Response (text/html)/infinite_image_browsing/open_folder
OpenFolderReq/infinite_image_browsing/shutdown
Dict[str, str]/infinite_image_browsing/zip
PackReqFileResponse (application/zip)/infinite_image_browsing/open_with_default_app
OpenFolderReq/infinite_image_browsing/batch_top_4_media_info
PathsReqDict[str, List[Dict[str, Any]]]/infinite_image_browsing/db)/infinite_image_browsing/db/basic_info
Dict[str, Any]/infinite_image_browsing/db/random_images
List[FileInfoDict]/infinite_image_browsing/db/expired_dirs
Dict[str, Any]/infinite_image_browsing/db/update_image_data
/infinite_image_browsing/db/search_by_substr
SearchBySubstrReq{"files": List[Image], "cursor": Cursor}/infinite_image_browsing/db/match_images_by_tags
MatchImagesByTagsReq{"files": List[Image], "cursor": Cursor}/infinite_image_browsing/db/img_selected_custom_tag
path: strList[Tag]/infinite_image_browsing/db/get_image_tags
PathsReqDict[str, List[Tag]]/infinite_image_browsing/db/update_tag
UpdateTagReq/infinite_image_browsing/db/toggle_custom_tag_to_img
ToggleCustomTagToImgReq{"is_remove": bool}/infinite_image_browsing/db/batch_update_image_tag
BatchUpdateImageReq/infinite_image_browsing/db/add_custom_tag
AddCustomTagReqTag/infinite_image_browsing/db/rename
RenameFileReq{"detail": str, "new_path": str}/infinite_image_browsing/db/remove_custom_tag
RemoveCustomTagReq/infinite_image_browsing/db/remove_custom_tag_from_img
RemoveCustomTagFromReq/infinite_image_browsing/db/extra_paths
ExtraPathModel/infinite_image_browsing/db/alias_extra_path
ExtraPathAliasModelExtraPath/infinite_image_browsing/db/extra_paths
List[ExtraPath]/infinite_image_browsing/db/extra_paths
ExtraPathModel/infinite_image_browsing/db/rebuild_index
/infinite_image_browsing/ai-chat
AIChatRequestAIChatResponse/infinite_image_browsing/db)/infinite_image_browsing/db/build_iib_output_embeddings
BuildIibOutputEmbeddingReqDict[str, Any] (e.g., {"folder": str, "count": int, "updated": int, "skipped": int, "model": str})/infinite_image_browsing/db/cluster_iib_output_cached
ClusterIibOutputReqDict[str, Any] (e.g., {"cache_key": str, "cache_hit": bool, "stale": bool, "result": ClusterIibOutputResp | null, ...})/infinite_image_browsing/db/cluster_iib_output_job_start
ClusterIibOutputReq{"job_id": str}/infinite_image_browsing/db/cluster_iib_output_job_status
job_id: strDict[str, Any] (e.g., {"job_id": str, "status": str, "stage": str, "progress": dict, "error": str, "result": ClusterIibOutputResp | null})/infinite_image_browsing/db/search_iib_output_by_prompt
PromptSearchReqDict[str, Any] (e.g., {"query": str, "folder": str, "model": str, "count": int, "top_k": int, "results": List[dict]})/infinite_image_browsing/db)/infinite_image_browsing/db/cluster_tag_graph
TagGraphReqTagGraphResp/infinite_image_browsing/db/cluster_tag_graph_cluster_paths
ClusterPathsReqDict[str, List[str]] (e.g., {"paths": List[str]})