{ "swagger": "2.0", "info": { "description": "The LocalAI Rest API.", "title": "LocalAI API", "contact": { "name": "LocalAI", "url": "https://localai.io" }, "license": { "name": "MIT", "url": "https://raw.githubusercontent.com/mudler/LocalAI/master/LICENSE" }, "version": "2.0.0" }, "basePath": "/", "paths": { "/api/p2p": { "get": { "summary": "Returns available P2P nodes", "responses": { "200": { "description": "Response", "schema": { "type": "array", "items": { "$ref": "#/definitions/schema.P2PNodesResponse" } } } } } }, "/api/p2p/token": { "get": { "summary": "Show the P2P token", "responses": { "200": { "description": "Response", "schema": { "type": "string" } } } } }, "/backend/monitor": { "get": { "summary": "Backend monitor endpoint", "parameters": [ { "description": "Backend statistics request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.BackendMonitorRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/proto.StatusResponse" } } } } }, "/backend/shutdown": { "post": { "summary": "Backend monitor endpoint", "parameters": [ { "description": "Backend statistics request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.BackendMonitorRequest" } } ], "responses": {} } }, "/metrics": { "get": { "summary": "Prometheus metrics endpoint", "parameters": [ { "description": "Gallery details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/config.Gallery" } } ], "responses": {} } }, "/models/apply": { "post": { "summary": "Install models to LocalAI.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/localai.GalleryModel" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.GalleryResponse" } } } } }, "/models/available": { "get": { "summary": "List installable models.", "responses": { "200": { "description": "Response", "schema": { "type": "array", "items": { "$ref": "#/definitions/gallery.GalleryModel" } } } } } }, "/models/delete/{name}": { "post": { "summary": "delete models to LocalAI.", "parameters": [ { "type": "string", "description": "Model name", "name": "name", "in": "path", "required": true } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.GalleryResponse" } } } } }, "/models/galleries": { "get": { "summary": "List all Galleries", "responses": { "200": { "description": "Response", "schema": { "type": "array", "items": { "$ref": "#/definitions/config.Gallery" } } } } }, "post": { "summary": "Adds a gallery in LocalAI", "parameters": [ { "description": "Gallery details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/config.Gallery" } } ], "responses": { "200": { "description": "Response", "schema": { "type": "array", "items": { "$ref": "#/definitions/config.Gallery" } } } } }, "delete": { "summary": "removes a gallery from LocalAI", "parameters": [ { "description": "Gallery details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/config.Gallery" } } ], "responses": { "200": { "description": "Response", "schema": { "type": "array", "items": { "$ref": "#/definitions/config.Gallery" } } } } } }, "/models/jobs": { "get": { "summary": "Returns all the jobs status progress", "responses": { "200": { "description": "Response", "schema": { "type": "object", "additionalProperties": { "$ref": "#/definitions/gallery.GalleryOpStatus" } } } } } }, "/models/jobs/{uuid}": { "get": { "summary": "Returns the job status", "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/gallery.GalleryOpStatus" } } } } }, "/tts": { "post": { "consumes": [ "application/json" ], "produces": [ "audio/x-wav" ], "summary": "Generates audio from the input text.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.TTSRequest" } } ], "responses": { "200": { "description": "generated audio/wav file", "schema": { "type": "string" } } } } }, "/v1/assistants": { "get": { "summary": "List available assistents", "parameters": [ { "type": "integer", "description": "Limit the number of assistants returned", "name": "limit", "in": "query" }, { "type": "string", "description": "Order of assistants returned", "name": "order", "in": "query" }, { "type": "string", "description": "Return assistants created after the given ID", "name": "after", "in": "query" }, { "type": "string", "description": "Return assistants created before the given ID", "name": "before", "in": "query" } ], "responses": { "200": { "description": "Response", "schema": { "type": "array", "items": { "$ref": "#/definitions/openai.Assistant" } } } } }, "post": { "summary": "Create an assistant with a model and instructions.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/openai.AssistantRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/openai.Assistant" } } } } }, "/v1/assistants/{assistant_id}": { "get": { "summary": "Get assistent data", "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/openai.Assistant" } } } }, "delete": { "summary": "Delete assistents", "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.DeleteAssistantResponse" } } } } }, "/v1/audio/speech": { "post": { "consumes": [ "application/json" ], "produces": [ "audio/x-wav" ], "summary": "Generates audio from the input text.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.TTSRequest" } } ], "responses": { "200": { "description": "generated audio/wav file", "schema": { "type": "string" } } } } }, "/v1/audio/transcriptions": { "post": { "consumes": [ "multipart/form-data" ], "summary": "Transcribes audio into the input language.", "parameters": [ { "type": "string", "description": "model", "name": "model", "in": "formData", "required": true }, { "type": "file", "description": "file", "name": "file", "in": "formData", "required": true } ], "responses": { "200": { "description": "Response", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/v1/chat/completions": { "post": { "summary": "Generate a chat completions for a given prompt and model.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.OpenAIRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.OpenAIResponse" } } } } }, "/v1/completions": { "post": { "summary": "Generate completions for a given prompt and model.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.OpenAIRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.OpenAIResponse" } } } } }, "/v1/edits": { "post": { "summary": "OpenAI edit endpoint", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.OpenAIRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.OpenAIResponse" } } } } }, "/v1/embeddings": { "post": { "summary": "Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.OpenAIRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.OpenAIResponse" } } } } }, "/v1/files": { "get": { "summary": "List files.", "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.ListFiles" } } } } }, "/v1/files/{file_id}": { "get": { "summary": "Returns information about a specific file.", "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.File" } } } }, "delete": { "summary": "Delete a file.", "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/openai.DeleteStatus" } } } } }, "/v1/files/{file_id}/content": { "get": { "summary": "Returns information about a specific file.", "responses": { "200": { "description": "file", "schema": { "type": "string" } } } } }, "/v1/images/generations": { "post": { "summary": "Creates an image given a prompt.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.OpenAIRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.OpenAIResponse" } } } } }, "/v1/models": { "get": { "summary": "List and describe the various models available in the API.", "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.ModelsDataResponse" } } } } }, "/v1/rerank": { "post": { "summary": "Reranks a list of phrases by relevance to a given text query.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.JINARerankRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "$ref": "#/definitions/schema.JINARerankResponse" } } } } }, "/v1/sound-generation": { "post": { "summary": "Generates audio from the input text.", "parameters": [ { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.ElevenLabsSoundGenerationRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "type": "string" } } } } }, "/v1/text-to-speech/{voice-id}": { "post": { "summary": "Generates audio from the input text.", "parameters": [ { "type": "string", "description": "Account ID", "name": "voice-id", "in": "path", "required": true }, { "description": "query params", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/schema.TTSRequest" } } ], "responses": { "200": { "description": "Response", "schema": { "type": "string" } } } } } }, "definitions": { "config.Gallery": { "type": "object", "properties": { "name": { "type": "string" }, "url": { "type": "string" } } }, "functions.Function": { "type": "object", "properties": { "description": { "type": "string" }, "name": { "type": "string" }, "parameters": { "type": "object", "additionalProperties": true }, "strict": { "type": "boolean" } } }, "functions.Item": { "type": "object", "properties": { "properties": { "type": "object", "additionalProperties": true }, "type": { "type": "string" } } }, "functions.JSONFunctionStructure": { "type": "object", "properties": { "$defs": { "type": "object", "additionalProperties": true }, "anyOf": { "type": "array", "items": { "$ref": "#/definitions/functions.Item" } }, "oneOf": { "type": "array", "items": { "$ref": "#/definitions/functions.Item" } } } }, "functions.Tool": { "type": "object", "properties": { "function": { "$ref": "#/definitions/functions.Function" }, "type": { "type": "string" } } }, "gallery.File": { "type": "object", "properties": { "filename": { "type": "string" }, "sha256": { "type": "string" }, "uri": { "type": "string" } } }, "gallery.GalleryModel": { "type": "object", "properties": { "config_file": { "description": "config_file is read in the situation where URL is blank - and therefore this is a base config.", "type": "object", "additionalProperties": true }, "description": { "type": "string" }, "files": { "description": "AdditionalFiles are used to add additional files to the model", "type": "array", "items": { "$ref": "#/definitions/gallery.File" } }, "gallery": { "description": "Gallery is a reference to the gallery which contains the model", "allOf": [ { "$ref": "#/definitions/config.Gallery" } ] }, "icon": { "type": "string" }, "installed": { "description": "Installed is used to indicate if the model is installed or not", "type": "boolean" }, "license": { "type": "string" }, "name": { "type": "string" }, "overrides": { "description": "Overrides are used to override the configuration of the model located at URL", "type": "object", "additionalProperties": true }, "tags": { "type": "array", "items": { "type": "string" } }, "url": { "type": "string" }, "urls": { "type": "array", "items": { "type": "string" } } } }, "gallery.GalleryOpStatus": { "type": "object", "properties": { "deletion": { "description": "Deletion is true if the operation is a deletion", "type": "boolean" }, "downloaded_size": { "type": "string" }, "error": {}, "file_name": { "type": "string" }, "file_size": { "type": "string" }, "gallery_model_name": { "type": "string" }, "message": { "type": "string" }, "processed": { "type": "boolean" }, "progress": { "type": "number" } } }, "localai.GalleryModel": { "type": "object", "properties": { "config_file": { "description": "config_file is read in the situation where URL is blank - and therefore this is a base config.", "type": "object", "additionalProperties": true }, "config_url": { "type": "string" }, "description": { "type": "string" }, "files": { "description": "AdditionalFiles are used to add additional files to the model", "type": "array", "items": { "$ref": "#/definitions/gallery.File" } }, "gallery": { "description": "Gallery is a reference to the gallery which contains the model", "allOf": [ { "$ref": "#/definitions/config.Gallery" } ] }, "icon": { "type": "string" }, "id": { "type": "string" }, "installed": { "description": "Installed is used to indicate if the model is installed or not", "type": "boolean" }, "license": { "type": "string" }, "name": { "type": "string" }, "overrides": { "description": "Overrides are used to override the configuration of the model located at URL", "type": "object", "additionalProperties": true }, "tags": { "type": "array", "items": { "type": "string" } }, "url": { "type": "string" }, "urls": { "type": "array", "items": { "type": "string" } } } }, "openai.Assistant": { "type": "object", "properties": { "created": { "description": "The time at which the assistant was created.", "type": "integer" }, "description": { "description": "The description of the assistant.", "type": "string" }, "file_ids": { "description": "A list of file IDs attached to this assistant.", "type": "array", "items": { "type": "string" } }, "id": { "description": "The unique identifier of the assistant.", "type": "string" }, "instructions": { "description": "The system instructions that the assistant uses.", "type": "string" }, "metadata": { "description": "Set of key-value pairs attached to the assistant.", "type": "object", "additionalProperties": { "type": "string" } }, "model": { "description": "The model ID used by the assistant.", "type": "string" }, "name": { "description": "The name of the assistant.", "type": "string" }, "object": { "description": "Object type, which is \"assistant\".", "type": "string" }, "tools": { "description": "A list of tools enabled on the assistant.", "type": "array", "items": { "$ref": "#/definitions/openai.Tool" } } } }, "openai.AssistantRequest": { "type": "object", "properties": { "description": { "type": "string" }, "file_ids": { "type": "array", "items": { "type": "string" } }, "instructions": { "type": "string" }, "metadata": { "type": "object", "additionalProperties": { "type": "string" } }, "model": { "type": "string" }, "name": { "type": "string" }, "tools": { "type": "array", "items": { "$ref": "#/definitions/openai.Tool" } } } }, "openai.DeleteStatus": { "type": "object", "properties": { "deleted": { "type": "boolean" }, "id": { "type": "string" }, "object": { "type": "string" } } }, "openai.Tool": { "type": "object", "properties": { "type": { "$ref": "#/definitions/openai.ToolType" } } }, "openai.ToolType": { "type": "string", "enum": [ "code_interpreter", "retrieval", "function" ], "x-enum-varnames": [ "CodeInterpreter", "Retrieval", "Function" ] }, "p2p.NodeData": { "type": "object", "properties": { "id": { "type": "string" }, "lastSeen": { "type": "string" }, "name": { "type": "string" }, "serviceID": { "type": "string" }, "tunnelAddress": { "type": "string" } } }, "proto.MemoryUsageData": { "type": "object", "properties": { "breakdown": { "type": "object", "additionalProperties": { "type": "integer" } }, "total": { "type": "integer" } } }, "proto.StatusResponse": { "type": "object", "properties": { "memory": { "$ref": "#/definitions/proto.MemoryUsageData" }, "state": { "$ref": "#/definitions/proto.StatusResponse_State" } } }, "proto.StatusResponse_State": { "type": "integer", "enum": [ 0, 1, 2, -1 ], "x-enum-varnames": [ "StatusResponse_UNINITIALIZED", "StatusResponse_BUSY", "StatusResponse_READY", "StatusResponse_ERROR" ] }, "schema.BackendMonitorRequest": { "type": "object", "properties": { "model": { "type": "string" } } }, "schema.Choice": { "type": "object", "properties": { "delta": { "$ref": "#/definitions/schema.Message" }, "finish_reason": { "type": "string" }, "index": { "type": "integer" }, "message": { "$ref": "#/definitions/schema.Message" }, "text": { "type": "string" } } }, "schema.DeleteAssistantResponse": { "type": "object", "properties": { "deleted": { "type": "boolean" }, "id": { "type": "string" }, "object": { "type": "string" } } }, "schema.ElevenLabsSoundGenerationRequest": { "type": "object", "properties": { "do_sample": { "type": "boolean" }, "duration_seconds": { "type": "number" }, "model_id": { "type": "string" }, "prompt_influence": { "type": "number" }, "text": { "type": "string" } } }, "schema.File": { "type": "object", "properties": { "bytes": { "description": "Size of the file in bytes", "type": "integer" }, "created_at": { "description": "The time at which the file was created", "type": "string" }, "filename": { "description": "The name of the file", "type": "string" }, "id": { "description": "Unique identifier for the file", "type": "string" }, "object": { "description": "Type of the object (e.g., \"file\")", "type": "string" }, "purpose": { "description": "The purpose of the file (e.g., \"fine-tune\", \"classifications\", etc.)", "type": "string" } } }, "schema.FunctionCall": { "type": "object", "properties": { "arguments": { "type": "string" }, "name": { "type": "string" } } }, "schema.GalleryResponse": { "type": "object", "properties": { "status": { "type": "string" }, "uuid": { "type": "string" } } }, "schema.Item": { "type": "object", "properties": { "b64_json": { "type": "string" }, "embedding": { "type": "array", "items": { "type": "number" } }, "index": { "type": "integer" }, "object": { "type": "string" }, "url": { "description": "Images", "type": "string" } } }, "schema.JINADocumentResult": { "type": "object", "properties": { "document": { "$ref": "#/definitions/schema.JINAText" }, "index": { "type": "integer" }, "relevance_score": { "type": "number" } } }, "schema.JINARerankRequest": { "type": "object", "properties": { "documents": { "type": "array", "items": { "type": "string" } }, "model": { "type": "string" }, "query": { "type": "string" }, "top_n": { "type": "integer" } } }, "schema.JINARerankResponse": { "type": "object", "properties": { "model": { "type": "string" }, "results": { "type": "array", "items": { "$ref": "#/definitions/schema.JINADocumentResult" } }, "usage": { "$ref": "#/definitions/schema.JINAUsageInfo" } } }, "schema.JINAText": { "type": "object", "properties": { "text": { "type": "string" } } }, "schema.JINAUsageInfo": { "type": "object", "properties": { "prompt_tokens": { "type": "integer" }, "total_tokens": { "type": "integer" } } }, "schema.ListFiles": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/schema.File" } }, "object": { "type": "string" } } }, "schema.Message": { "type": "object", "properties": { "content": { "description": "The message content" }, "function_call": { "description": "A result of a function call" }, "name": { "description": "The message name (used for tools calls)", "type": "string" }, "role": { "description": "The message role", "type": "string" }, "string_content": { "type": "string" }, "string_images": { "type": "array", "items": { "type": "string" } }, "tool_calls": { "type": "array", "items": { "$ref": "#/definitions/schema.ToolCall" } } } }, "schema.ModelsDataResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/schema.OpenAIModel" } }, "object": { "type": "string" } } }, "schema.OpenAIModel": { "type": "object", "properties": { "id": { "type": "string" }, "object": { "type": "string" } } }, "schema.OpenAIRequest": { "type": "object", "required": [ "file" ], "properties": { "backend": { "type": "string" }, "batch": { "description": "Custom parameters - not present in the OpenAI API", "type": "integer" }, "clip_skip": { "description": "Diffusers", "type": "integer" }, "echo": { "type": "boolean" }, "file": { "description": "whisper", "type": "string" }, "frequency_penalty": { "type": "number" }, "function_call": { "description": "might be a string or an object" }, "functions": { "description": "A list of available functions to call", "type": "array", "items": { "$ref": "#/definitions/functions.Function" } }, "grammar": { "description": "A grammar to constrain the LLM output", "type": "string" }, "grammar_json_functions": { "$ref": "#/definitions/functions.JSONFunctionStructure" }, "ignore_eos": { "type": "boolean" }, "input": {}, "instruction": { "description": "Edit endpoint", "type": "string" }, "language": { "description": "Also part of the OpenAI official spec", "type": "string" }, "max_tokens": { "type": "integer" }, "messages": { "description": "Messages is read only by chat/completion API calls", "type": "array", "items": { "$ref": "#/definitions/schema.Message" } }, "mode": { "description": "Image (not supported by OpenAI)", "type": "integer" }, "model": { "description": "Also part of the OpenAI official spec", "type": "string" }, "model_base_name": { "description": "AutoGPTQ", "type": "string" }, "n": { "description": "Also part of the OpenAI official spec. use it for returning multiple results", "type": "integer" }, "n_keep": { "type": "integer" }, "negative_prompt": { "type": "string" }, "negative_prompt_scale": { "type": "number" }, "presence_penalty": { "type": "number" }, "prompt": { "description": "Prompt is read only by completion/image API calls" }, "repeat_last_n": { "type": "integer" }, "repeat_penalty": { "type": "number" }, "response_format": { "description": "whisper/image" }, "rope_freq_base": { "type": "number" }, "rope_freq_scale": { "type": "number" }, "seed": { "type": "integer" }, "size": { "description": "image", "type": "string" }, "step": { "type": "integer" }, "stop": {}, "stream": { "type": "boolean" }, "temperature": { "type": "number" }, "tfz": { "type": "number" }, "tokenizer": { "description": "RWKV (?)", "type": "string" }, "tool_choice": {}, "tools": { "type": "array", "items": { "$ref": "#/definitions/functions.Tool" } }, "top_k": { "type": "integer" }, "top_p": { "description": "Common options between all the API calls, part of the OpenAI spec", "type": "number" }, "translate": { "description": "Only for audio transcription", "type": "boolean" }, "typical_p": { "type": "number" }, "use_fast_tokenizer": { "description": "AutoGPTQ", "type": "boolean" } } }, "schema.OpenAIResponse": { "type": "object", "properties": { "choices": { "type": "array", "items": { "$ref": "#/definitions/schema.Choice" } }, "created": { "type": "integer" }, "data": { "type": "array", "items": { "$ref": "#/definitions/schema.Item" } }, "id": { "type": "string" }, "model": { "type": "string" }, "object": { "type": "string" }, "usage": { "$ref": "#/definitions/schema.OpenAIUsage" } } }, "schema.OpenAIUsage": { "type": "object", "properties": { "completion_tokens": { "type": "integer" }, "prompt_tokens": { "type": "integer" }, "total_tokens": { "type": "integer" } } }, "schema.P2PNodesResponse": { "type": "object", "properties": { "federated_nodes": { "type": "array", "items": { "$ref": "#/definitions/p2p.NodeData" } }, "nodes": { "type": "array", "items": { "$ref": "#/definitions/p2p.NodeData" } } } }, "schema.TTSRequest": { "description": "TTS request body", "type": "object", "properties": { "backend": { "type": "string" }, "input": { "description": "text input", "type": "string" }, "language": { "description": "(optional) language to use with TTS model", "type": "string" }, "model": { "description": "model name or full path", "type": "string" }, "voice": { "description": "voice audio file or speaker id", "type": "string" } } }, "schema.ToolCall": { "type": "object", "properties": { "function": { "$ref": "#/definitions/schema.FunctionCall" }, "id": { "type": "string" }, "index": { "type": "integer" }, "type": { "type": "string" } } } }, "securityDefinitions": { "BearerAuth": { "type": "apiKey", "name": "Authorization", "in": "header" } } }