[{"data":1,"prerenderedAt":505},["ShallowReactive",2],{"docs-en-/en/docs/services/custom-services":3},{"id":4,"title":5,"body":6,"description":497,"extension":498,"meta":499,"navigation":500,"path":501,"seo":502,"stem":503,"__hash__":504},"docs/en/docs/services/custom-services.md","Custom Services",{"type":7,"value":8,"toc":476},"minimark",[9,13,17,22,25,125,131,135,140,160,164,184,188,191,225,229,236,267,276,280,302,306,323,331,335,338,354,361,365,368,386,390,394,397,414,418,421,436,440,443,454,457],[10,11,5],"h1",{"id":12},"custom-services",[14,15,16],"p",{},"In addition to built-in and local services, Doco Translate lets you add custom translation services that are compatible with common LLM API formats. This is useful for private deployments, proxy endpoints, enterprise gateways, or model providers not included in the default list.",[18,19,21],"h2",{"id":20},"supported-api-protocols","Supported API Protocols",[14,23,24],{},"Doco Translate supports the following API protocols for custom services:",[26,27,28,44],"table",{},[29,30,31],"thead",{},[32,33,34,38,41],"tr",{},[35,36,37],"th",{},"Protocol",[35,39,40],{},"Default Path",[35,42,43],{},"Description",[45,46,47,65,80,95,110],"tbody",{},[32,48,49,56,62],{},[50,51,52],"td",{},[53,54,55],"strong",{},"OpenAI",[50,57,58],{},[59,60,61],"code",{},"/v1/chat/completions",[50,63,64],{},"Compatible with OpenAI Chat Completions API. Works with most providers and self-hosted servers.",[32,66,67,72,77],{},[50,68,69],{},[53,70,71],{},"Anthropic",[50,73,74],{},[59,75,76],{},"/v1/messages",[50,78,79],{},"Compatible with Anthropic Messages API.",[32,81,82,87,92],{},[50,83,84],{},[53,85,86],{},"Gemini",[50,88,89],{},[59,90,91],{},"/v1beta/models",[50,93,94],{},"Compatible with Google Gemini API.",[32,96,97,102,107],{},[50,98,99],{},[53,100,101],{},"Ollama",[50,103,104],{},[59,105,106],{},"/api/chat",[50,108,109],{},"Compatible with Ollama's local API format.",[32,111,112,117,122],{},[50,113,114],{},[53,115,116],{},"LM Studio",[50,118,119],{},[59,120,121],{},"/api/v1/chat",[50,123,124],{},"Compatible with LM Studio's local server API.",[14,126,127,128,130],{},"The ",[53,129,55],{}," protocol is the most widely compatible — many third-party providers and self-hosted servers implement the OpenAI Chat Completions API format.",[18,132,134],{"id":133},"adding-a-custom-service","Adding a Custom Service",[136,137,139],"h3",{"id":138},"step-1-open-the-custom-service-dialog","Step 1: Open the Custom Service Dialog",[141,142,143,151,154],"ol",{},[144,145,146,147,150],"li",{},"Go to ",[53,148,149],{},"Settings → Services",".",[144,152,153],{},"Scroll to the bottom of the service list on the left.",[144,155,156,157,150],{},"Click ",[53,158,159],{},"Custom Service",[136,161,163],{"id":162},"step-2-configure-the-service","Step 2: Configure the Service",[141,165,166,172,178],{},[144,167,168,171],{},[53,169,170],{},"Service Name"," — Enter a descriptive name (e.g., \"My Proxy\", \"Company LLM\"). The name must be unique.",[144,173,174,177],{},[53,175,176],{},"API Protocol"," — Select the API protocol that your service implements.",[144,179,156,180,183],{},[53,181,182],{},"Add"," to create the service.",[136,185,187],{"id":186},"step-3-configure-connection-details","Step 3: Configure Connection Details",[14,189,190],{},"After creating the service, you'll be taken to its settings page:",[141,192,193,199,213,219],{},[144,194,195,198],{},[53,196,197],{},"API Key"," — Enter the API key if your service requires authentication. Leave empty for services that don't need a key.",[144,200,201,204,205,208,209,212],{},[53,202,203],{},"API Host"," — Enter the base URL of your service (e.g., ",[59,206,207],{},"https://my-proxy.example.com",", ",[59,210,211],{},"http://192.168.1.100:8080",").",[144,214,215,218],{},[53,216,217],{},"Model"," — Enter or select the model name to use for translation.",[144,220,156,221,224],{},[53,222,223],{},"Verify service"," to test the connection.",[136,226,228],{"id":227},"step-4-advanced-configuration","Step 4: Advanced Configuration",[14,230,231,232,235],{},"Click the ",[53,233,234],{},"gear icon"," next to the API Host field to access advanced settings:",[237,238,239,247,257],"ul",{},[144,240,241,244,245,212],{},[53,242,243],{},"API Path"," — Customize the request path if it differs from the protocol default (e.g., ",[59,246,61],{},[144,248,249,252,253,256],{},[53,250,251],{},"Request Body"," — Add custom JSON fields that are merged into each translation request. For example, ",[59,254,255],{},"{\"temperature\": 0.3}"," to control translation creativity.",[144,258,259,262,263,266],{},[53,260,261],{},"Request Headers"," — Add custom HTTP headers. For example, ",[59,264,265],{},"{\"X-Custom-Header\": \"value\"}"," for authentication or routing.",[268,269,270],"blockquote",{},[14,271,272,275],{},[53,273,274],{},"Note:"," Request Body and Request Headers must be valid JSON format.",[18,277,279],{"id":278},"editing-a-custom-service","Editing a Custom Service",[141,281,282,286,289,294,297],{},[144,283,146,284,150],{},[53,285,149],{},[144,287,288],{},"Select the custom service from the list.",[144,290,231,291,293],{},[53,292,234],{}," next to the service name.",[144,295,296],{},"Modify the name or protocol as needed.",[144,298,156,299,150],{},[53,300,301],{},"Save",[18,303,305],{"id":304},"deleting-a-custom-service","Deleting a Custom Service",[141,307,308,312,314,320],{},[144,309,146,310,150],{},[53,311,149],{},[144,313,288],{},[144,315,156,316,319],{},[53,317,318],{},"Delete Service"," at the bottom of the settings page.",[144,321,322],{},"Confirm the deletion.",[268,324,325],{},[14,326,327,330],{},[53,328,329],{},"Warning:"," Deleting a custom service removes its configuration permanently. Any API keys and model settings will be lost.",[18,332,334],{"id":333},"fetching-models","Fetching Models",[14,336,337],{},"Custom services support fetching the model list from the remote server:",[141,339,340,346,349],{},[144,341,342,343,150],{},"In the service settings, click ",[53,344,345],{},"Fetch model list",[144,347,348],{},"The app connects to your service and retrieves available models.",[144,350,351,352,150],{},"Select the models you want to add and click ",[53,353,182],{},[268,355,356],{},[14,357,358,360],{},[53,359,274],{}," Not all services support the model listing endpoint. If the fetch fails, you can add models manually.",[18,362,364],{"id":363},"adding-models-manually","Adding Models Manually",[14,366,367],{},"You can add models to a custom service without fetching:",[141,369,370,376,379,382],{},[144,371,156,372,375],{},[53,373,374],{},"Add Model"," in the service settings.",[144,377,378],{},"Enter the exact model identifier expected by your service.",[144,380,381],{},"Optionally mark it as a free model.",[144,383,156,384,150],{},[53,385,182],{},[18,387,389],{"id":388},"common-use-cases","Common Use Cases",[136,391,393],{"id":392},"private-api-proxy","Private API Proxy",[14,395,396],{},"If you have a proxy server that routes requests to a cloud provider:",[141,398,399,405,408,411],{},[144,400,401,402,404],{},"Create a custom service with the ",[53,403,55],{}," protocol.",[144,406,407],{},"Set the API Host to your proxy URL.",[144,409,410],{},"Enter the API key required by your proxy.",[144,412,413],{},"Add the models your proxy supports.",[136,415,417],{"id":416},"self-hosted-model","Self-Hosted Model",[14,419,420],{},"If you run a model on your own server using vLLM, text-generation-webui, llama.cpp server, or similar:",[141,422,423,427,433],{},[144,424,401,425,404],{},[53,426,55],{},[144,428,429,430,212],{},"Set the API Host to your server's address (e.g., ",[59,431,432],{},"http://localhost:8000",[144,434,435],{},"Add the model name your server exposes.",[136,437,439],{"id":438},"enterprise-gateway","Enterprise Gateway",[14,441,442],{},"For corporate environments with centralized LLM gateways:",[141,444,445,448,451],{},[144,446,447],{},"Create a custom service with the appropriate protocol.",[144,449,450],{},"Set the API Host to your enterprise gateway URL.",[144,452,453],{},"Enter your corporate API key or authentication header in the advanced settings.",[455,456],"hr",{},[14,458,459,462,463,468,469,462,472],{},[53,460,461],{},"Previous:"," ",[464,465,467],"a",{"href":466},"./local-llm-services","Local LLM Services"," · ",[53,470,471],{},"Next:",[464,473,475],{"href":474},"../resources/faq","FAQ",{"title":477,"searchDepth":478,"depth":478,"links":479},"",2,[480,481,488,489,490,491,492],{"id":20,"depth":478,"text":21},{"id":133,"depth":478,"text":134,"children":482},[483,485,486,487],{"id":138,"depth":484,"text":139},3,{"id":162,"depth":484,"text":163},{"id":186,"depth":484,"text":187},{"id":227,"depth":484,"text":228},{"id":278,"depth":478,"text":279},{"id":304,"depth":478,"text":305},{"id":333,"depth":478,"text":334},{"id":363,"depth":478,"text":364},{"id":388,"depth":478,"text":389,"children":493},[494,495,496],{"id":392,"depth":484,"text":393},{"id":416,"depth":484,"text":417},{"id":438,"depth":484,"text":439},"In addition to built-in and local services, Doco Translate lets you add custom translation services that are compatible with common LLM API formats. This is use","md",{},true,"/en/docs/services/custom-services",{"title":5,"description":497},"en/docs/services/custom-services","1iMoSBq1E-ZqXzLhR_ZNJUClNeh1ldr2PiNqh4U2LZk",1780845388797]