{"openapi":"3.0.0","info":{"description":"Novita AI model inference API — OpenAI-compatible LLMs, batches and files, plus GPU instance and serverless endpoint management; static Bearer key.","version":"v1"},"servers":[{"description":"Novita AI model inference API — OpenAI-compatible LLMs, batches and files, plus GPU instance and serverless endpoint management; static Bearer key.","url":"https://api.apirails.com/novita"}],"paths":{"/v1/chat/completions":{"post":{"tags":["Chat"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-create-chat-completion","api_endpoint":"https://api.novita.ai/openai/v1/chat/completions"},"summary":"Create chat completion","description":"Creates a model response for a given conversation (OpenAI-compatible).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"enable_thinking":{"type":"boolean","description":"Enable thinking/reasoning mode for models that support it.","enum":[true,false]},"frequency_penalty":{"type":"number","description":"Positive values penalize new tokens based on their existing frequency in the text so far. Values around 0.1 to 1 reduce repetition; up to 2 strongly suppresses it. Negative values increase repetition."},"include_usage":{"type":"boolean","description":"Include token usage statistics in the response.","enum":[true,false]},"logit_bias":{"type":"object","description":"Map of token IDs to bias values from -100 to 100, modifying likelihood of specified tokens."},"logprobs":{"type":"boolean","description":"Whether to return log probabilities of the output tokens.","enum":[true,false]},"max_tokens":{"type":"number","description":"The maximum number of tokens to generate in the completion. Lowered automatically to fit the model context window if the prompt plus max_tokens exceeds it.","required":true},"messages":{"type":"array","description":"A list of messages comprising the conversation so far. Content may be a plain string or an array of typed content parts (text, image_url, video_url, input_audio) for multimodal models.","required":true,"items":{"type":"object","properties":{"content":{"type":"string","description":"The contents of the message. Pass a string for text, or an array of content parts such as {type: text, text}, {type: image_url, image_url: {url}} for vision models.","required":true},"role":{"type":"string","description":"The role of the message author.","required":true,"enum":["system","user","assistant"]}}}},"min_p":{"type":"number","description":"Minimum probability for a token to be considered, relative to the most likely token. Range 0 to 1."},"modalities":{"type":"array","description":"Output modalities for audio-capable models: [\"text\"] or [\"text\",\"audio\"].","enum":["text","audio"],"items":{"type":"string"}},"model":{"type":"string","description":"ID of the model to use, e.g. deepseek/deepseek-v3-0324.","required":true},"n":{"type":"number","description":"How many completions to generate for each prompt. Can quickly consume token quota."},"presence_penalty":{"type":"number","description":"Positive values penalize new tokens based on whether they appear in the text so far, increasing likelihood of new topics. Values around 0.1 to 1 recommended; up to 2 strongly suppresses repetition."},"repetition_penalty":{"type":"number","description":"Penalty applied to repeated tokens. 1.0 means no penalty; above 1.0 penalizes repetition; between 0.0 and 1.0 rewards repetition. 1.2 is often recommended."},"response_format":{"type":"object","description":"Forces a specific output format. json_schema enables Structured Outputs; json_object enables JSON mode.","properties":{"type":{"type":"string","description":"The response format type.","required":true,"enum":["text","json_object","json_schema"]},"json_schema":{"type":"object","description":"The JSON schema object for structured outputs (name, schema, strict)."}}},"seed":{"type":"number","description":"If specified, the system makes a best effort to sample deterministically."},"separate_reasoning":{"type":"boolean","description":"Whether to separate reasoning content from the final answer in the response.","enum":[true,false]},"stop":{"type":"array","description":"Up to 4 sequences where the API will stop generating further tokens.","items":{"type":"string"}},"stream":{"type":"boolean","description":"Whether to stream back partial progress via server-sent events.","enum":[true,false]},"stream_options":{"type":"object","description":"Options for streaming responses; set include_usage to receive a final usage chunk.","properties":{"include_usage":{"type":"boolean","description":"Include a usage chunk with total token usage before the final [DONE] chunk.","enum":[true,false]}}},"temperature":{"type":"number","description":"Sampling temperature, between 0 and 2. Higher values make output more random; lower values more focused. Recommended to alter this or top_p, not both."},"tools":{"type":"array","description":"A list of tools the model may call. Functions are described as JSON Schema objects.","items":{"type":"object","properties":{"type":{"type":"string","description":"The tool type, currently function.","required":true,"enum":["function"]},"function":{"type":"object","description":"The function definition.","required":true}}}},"top_k":{"type":"number","description":"Top-k sampling: only the k most probable next tokens are considered. Range 1 to 128."},"top_logprobs":{"type":"number","description":"Integer between 0 and 20 specifying the number of most likely tokens to return at each token position, with log probability."},"top_p":{"type":"number","description":"Nucleus sampling: only tokens comprising the top_p probability mass are considered. Range 0 to 1."}}},"example":{"enable_thinking":"","frequency_penalty":"","include_usage":true,"logit_bias":{},"logprobs":"","max_tokens":512,"messages":[{"content":"You are a helpful assistant.","role":"system"},{"content":"Hello!","role":"user"}],"min_p":0.05,"modalities":["text"],"model":"deepseek/deepseek-v3-0324","n":1,"presence_penalty":"","repetition_penalty":1.2,"response_format":{},"seed":42,"separate_reasoning":"","stop":["\n\nUser:"],"stream":"","stream_options":{},"temperature":1,"tools":[{"type":"function","function":{"description":"Get weather","name":"get_weather","parameters":{"type":"object","properties":{"city":{"type":"string"}}}}}],"top_k":50,"top_logprobs":5,"top_p":0.95}}}}}},"/v1/completions":{"post":{"tags":["Completions"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-create-completion","api_endpoint":"https://api.novita.ai/openai/v1/completions"},"summary":"Create completion","description":"Creates a completion for the provided prompt (OpenAI-compatible legacy completions).","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"best_of":{"type":"number","description":"Generates best_of completions server-side and returns the best (highest log probability per token). Cannot be streamed; must be greater than n when used together."},"frequency_penalty":{"type":"number","description":"Penalizes new tokens based on their existing frequency in the text so far."},"include_usage":{"type":"boolean","description":"Include token usage statistics in the response.","enum":[true,false]},"logit_bias":{"type":"object","description":"Map of token IDs to bias values from -100 to 100."},"logprobs":{"type":"boolean","description":"Include log probabilities of the output tokens.","enum":[true,false]},"max_tokens":{"type":"number","description":"The maximum number of tokens that can be generated in the completion."},"min_p":{"type":"number","description":"Minimum probability for a token to be considered relative to the most likely token. Range 0 to 1."},"model":{"type":"string","description":"ID of the model to use.","required":true},"n":{"type":"number","description":"How many completions to generate for each prompt."},"presence_penalty":{"type":"number","description":"Penalizes new tokens based on whether they appear in the text so far."},"prompt":{"type":"string","description":"The prompt(s) to generate completions for, encoded as a string, array of strings, array of tokens, or array of token arrays.","required":true},"repetition_penalty":{"type":"number","description":"Penalty applied to repeated tokens; 1.0 means no penalty. Range 0 to 2."},"seed":{"type":"number","description":"Best-effort deterministic sampling seed."},"stop":{"type":"array","description":"Up to 4 sequences where the API will stop generating further tokens.","items":{"type":"string"}},"stream":{"type":"boolean","description":"Whether to stream back partial progress.","enum":[true,false]},"temperature":{"type":"number","description":"Sampling temperature, between 0 and 2."},"top_k":{"type":"number","description":"Top-k sampling; range 1 to 128."},"top_p":{"type":"number","description":"Nucleus sampling. Range 0 to 1."}}},"example":{"best_of":1,"frequency_penalty":"","include_usage":true,"logit_bias":{},"logprobs":"","max_tokens":512,"min_p":0.05,"model":"deepseek/deepseek-r1","n":1,"presence_penalty":"","prompt":"Where can the example of GPU provided by novita ai be adapted?","repetition_penalty":1.2,"seed":42,"stop":["\n\n\n"],"stream":"","temperature":1,"top_k":50,"top_p":0.95}}}}}},"/v1/embeddings":{"post":{"tags":["Embeddings"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-create-embeddings","api_endpoint":"https://api.novita.ai/openai/v1/embeddings"},"summary":"Create embeddings","description":"Creates an embedding vector representing the input text.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"encoding_format":{"type":"string","description":"The format to return the embeddings in: float or base64.","enum":["float","base64"]},"input":{"type":"string","description":"Input text to embed, encoded as a string or array of tokens. To embed multiple inputs, pass an array of strings. Input must not exceed the model max input tokens, cannot be empty, and arrays must be 2048 dimensions or less.","required":true},"model":{"type":"string","description":"ID of the model to use.","required":true,"enum":["baai/bge-m3"]}}},"example":{"encoding_format":"float","input":"The quick brown fox","model":"baai/bge-m3"}}}}}},"/v1/rerank":{"post":{"tags":["Rerank"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-create-rerank","api_endpoint":"https://api.novita.ai/openai/v1/rerank"},"summary":"Rerank documents","description":"Reranks a list of documents against a search query by relevance.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"documents":{"type":"array","description":"Document list to rerank.","required":true,"items":{"type":"string"}},"model":{"type":"string","description":"The name of the model to use.","required":true},"query":{"type":"string","description":"The search query.","required":true},"top_n":{"type":"number","description":"Number of most relevant documents or indices to return."}}},"example":{"documents":["Paris is the capital of France.","Berlin is the capital of Germany."],"model":"baai/bge-reranker-v2-m3","query":"What is the capital of France?","top_n":5}}}}}},"/v1/models":{"get":{"tags":["Models"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-list-models","api_endpoint":"https://api.novita.ai/openai/v1/models"},"summary":"List models","description":"Lists the currently available models with pricing and context info. Public catalog.","security":[{"bearerAuth":[]}]}},"/v1/models/{model}":{"get":{"tags":["Models"],"parameters":[{"name":"model","in":"path","description":"The ID of the model to retrieve.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-retrieve-model","api_endpoint":"https://api.novita.ai/openai/v1/models/{model}"},"summary":"Retrieve model","description":"Retrieves a model instance, providing basic information about the model.","security":[{"bearerAuth":[]}]}},"/v1/batches":{"post":{"tags":["Batch"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-create-batch","api_endpoint":"https://api.novita.ai/openai/v1/batches"},"summary":"Create batch","description":"Creates and executes a batch from an uploaded input file. The completion window is fixed at 48 hours.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"completion_window":{"type":"string","description":"Time window for batch completion. Fixed at 48h and currently non-adjustable.","enum":["48h"]},"endpoint":{"type":"string","description":"The endpoint to use for batch processing.","required":true,"enum":["/v1/chat/completions","/v1/completions"]},"input_file_id":{"type":"string","description":"ID of the uploaded input file containing batch requests.","required":true}}},"example":{"completion_window":"48h","endpoint":"/v1/chat/completions","input_file_id":"file-abc123"}}}}},"get":{"tags":["Batch"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-list-batches","api_endpoint":"https://api.novita.ai/openai/v1/batches"},"summary":"List batches","description":"Lists all batch jobs.","security":[{"bearerAuth":[]}]}},"/v1/batches/{batch_id}":{"get":{"tags":["Batch"],"parameters":[{"name":"batch_id","in":"path","description":"The unique identifier of the batch job.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-retrieve-batch","api_endpoint":"https://api.novita.ai/openai/v1/batches/{batch_id}"},"summary":"Retrieve batch","description":"Retrieves a batch job with progress counts and output/error file IDs.","security":[{"bearerAuth":[]}]}},"/v1/batches/{batch_id}/cancel":{"post":{"tags":["Batch"],"parameters":[{"name":"batch_id","in":"path","description":"The unique identifier of the batch job to cancel.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-cancel-batch","api_endpoint":"https://api.novita.ai/openai/v1/batches/{batch_id}/cancel"},"summary":"Cancel batch","description":"Cancels an in-progress batch job.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/files":{"post":{"tags":["Files"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-upload-batch-input-file","api_endpoint":"https://api.novita.ai/openai/v1/files"},"summary":"Upload batch input file","description":"Uploads a .jsonl batch input file. Each line must carry a unique custom_id and a body with the inference request; all requests in one file must target the same model.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":false,"content":{"multipart/form-data":{"schema":{"type":"object","required":[],"properties":{"file":{"type":"string","format":"binary","description":"The batch input file in .jsonl format. Example line: {\"custom_id\": \"request-1\", \"body\": {\"model\": \"deepseek/deepseek-v3-0324\", \"messages\": [{\"role\": \"user\", \"content\": \"Hello\"}], \"max_tokens\": 400}}","required":true},"purpose":{"type":"string","description":"The purpose of the uploaded file. For batch processing, set to batch.","required":true,"enum":["batch"]}}},"example":{"file":"(binary)","purpose":"batch"}}}}},"get":{"tags":["Files"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-list-files","api_endpoint":"https://api.novita.ai/openai/v1/files"},"summary":"List files","description":"Displays a list of all available files.","security":[{"bearerAuth":[]}]}},"/v1/files/{file_id}":{"get":{"tags":["Files"],"parameters":[{"name":"file_id","in":"path","description":"The unique identifier of the file to retrieve.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-query-file","api_endpoint":"https://api.novita.ai/openai/v1/files/{file_id}"},"summary":"Retrieve file","description":"Retrieves information about a specific file.","security":[{"bearerAuth":[]}]},"delete":{"tags":["Files"],"parameters":[{"name":"file_id","in":"path","description":"The unique identifier of the file to delete.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-delete-file","api_endpoint":"https://api.novita.ai/openai/v1/files/{file_id}"},"summary":"Delete file","description":"Deletes a specific file.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{}},"example":{}}}}}},"/v1/files/{file_id}/content":{"get":{"tags":["Files"],"parameters":[{"name":"file_id","in":"path","description":"The unique identifier of the file to retrieve content for.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/model-apis-llm-retrieve-file-content","api_endpoint":"https://api.novita.ai/openai/v1/files/{file_id}/content"},"summary":"Retrieve file content","description":"Retrieves the raw content of a file; commonly used to download batch output or error files (JSONL).","security":[{"bearerAuth":[]}]}},"/openapi/v1/billing/balance/detail":{"get":{"tags":["Billing"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/basic-get-user-balance","api_endpoint":"https://api.novita.ai/openapi/v1/billing/balance/detail"},"summary":"Get user balance","description":"Returns the account balance detail. Amounts are in 1/10000 USD units (10000 = 1.00 USD).","security":[{"bearerAuth":[]}]}},"/openapi/v1/billing/monthly/bill":{"get":{"tags":["Billing"],"parameters":[{"name":"page","in":"query","description":"Page number, starting from 1.","required":false,"schema":{"type":"number","example":""}},{"name":"pageSize","in":"query","description":"Number of items per page.","required":false,"schema":{"type":"number","example":""}},{"name":"startMonth","in":"query","description":"Start month in YYYY-MM format, for example 2025-10. Monthly bill data is available starting from 2025-10.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/basic-query-monthly-bill","api_endpoint":"https://api.novita.ai/openapi/v1/billing/monthly/bill"},"summary":"Query monthly bill","description":"Queries the monthly bill list. Data is available starting from 2025-10.","security":[{"bearerAuth":[]}]}},"/gpu-instance/openapi/v1/gpu/instance/create":{"post":{"tags":["GPU Instances"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/gpu-instance-create-instance","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/gpu/instance/create"},"summary":"Create GPU instance","description":"Creates a GPU cloud instance from a GPU product.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"autoRenew":{"type":"boolean","description":"Auto-renew subscription instances.","enum":[true,false]},"billingMode":{"type":"string","description":"Billing mode for the instance.","enum":["onDemand","monthly","spot"]},"clusterId":{"type":"string","description":"Cluster ID to deploy in."},"envs":{"type":"array","description":"Instance environment variables; up to 100 entries.","items":{"type":"object","properties":{"key":{"type":"string","description":"Environment variable name, 0-511 characters."},"value":{"type":"string","description":"Environment variable value, 0-4095 characters."}}}},"gpuNum":{"type":"number","description":"Number of GPUs. Valid range 1-8.","required":true},"imageAuth":{"type":"string","description":"Image authentication (username:password), 0-10239 characters."},"imageAuthId":{"type":"string","description":"Image repository authentication ID."},"imageUrl":{"type":"string","description":"Container image URL, 1-500 characters.","required":true},"name":{"type":"string","description":"Instance name, 0-255 characters."},"networkId":{"type":"string","description":"VPC network ID to attach."},"ports":{"type":"string","description":"Instance open ports, e.g. 80/http, 3306/tcp. Supported range 1-65535 except reserved 2222-2224; types tcp or http; total ports + tools must not exceed 15."},"productId":{"type":"string","description":"GPU product ID, queryable via the List GPU Products endpoint.","required":true},"rootfsSize":{"type":"number","description":"Root filesystem size in GB, valid range 10-6144. Values below 10 default to 10; the maximum is dynamically limited by available storage.","required":true}}},"example":{"autoRenew":"","billingMode":"onDemand","clusterId":"","envs":[],"gpuNum":1,"imageAuth":"","imageAuthId":"","imageUrl":"nvcr.io/nvidia/pytorch:24.01-py3","name":"my-training-box","networkId":"","ports":"80/http","productId":"product-123","rootfsSize":50}}}}}},"/gpu-instance/openapi/v1/gpu/instances":{"get":{"tags":["GPU Instances"],"parameters":[{"name":"name","in":"query","description":"Instance name filter (fuzzy search), 0-255 characters.","required":false,"schema":{"type":"string","example":""}},{"name":"pageNum","in":"query","description":"Page number to retrieve. Integer, value >= 0.","required":true,"schema":{"type":"number","example":""}},{"name":"pageSize","in":"query","description":"Maximum number of items returned per page. Integer, value >= 0.","required":true,"schema":{"type":"number","example":""}},{"name":"productName","in":"query","description":"Product name filter (fuzzy search), 0-255 characters.","required":false,"schema":{"type":"string","example":""}},{"name":"status","in":"query","description":"Instance status filter: toCreate, creating, pulling, running, toStart, starting, toStop, stopping, exited, toRestart, restarting, toRemove, removing, removed, toReset, resetting, migrating, freezing.","required":false,"schema":{"type":"string","example":"","items":{"type":"string","enum":["toCreate","creating","pulling","running","toStart","starting","toStop","stopping","exited","toRestart","restarting","toRemove","removing","removed","toReset","resetting","migrating","freezing"]}}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/gpu-instance-list-instances","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/gpu/instances"},"summary":"List GPU instances","description":"Lists GPU cloud instances with filters and pagination.","security":[{"bearerAuth":[]}]}},"/gpu-instance/openapi/v1/gpu/instance":{"get":{"tags":["GPU Instances"],"parameters":[{"name":"instanceId","in":"query","description":"ID of the instance being queried.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/gpu-instance-get-instance","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/gpu/instance"},"summary":"Get GPU instance","description":"Gets GPU instance details including connection components and storage.","security":[{"bearerAuth":[]}]}},"/gpu-instance/openapi/v1/gpu/instance/start":{"post":{"tags":["GPU Instances"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/gpu-instance-start-instance","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/gpu/instance/start"},"summary":"Start GPU instance","description":"Starts a stopped GPU instance.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"instanceId":{"type":"string","description":"ID of the instance to be started.","required":true}}},"example":{"instanceId":"instance-123"}}}}}},"/gpu-instance/openapi/v1/gpu/instance/stop":{"post":{"tags":["GPU Instances"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/gpu-instance-stop-instance","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/gpu/instance/stop"},"summary":"Stop GPU instance","description":"Stops a running GPU instance.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"instanceId":{"type":"string","description":"ID of the instance to be stoped.","required":true}}},"example":{"instanceId":"instance-123"}}}}}},"/gpu-instance/openapi/v1/gpu/instance/delete":{"post":{"tags":["GPU Instances"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/gpu-instance-delete-instance","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/gpu/instance/delete"},"summary":"Delete GPU instance","description":"Deletes a GPU instance.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"instanceId":{"type":"string","description":"ID of the instance to be deleted.","required":true}}},"example":{"instanceId":"instance-123"}}}}}},"/gpu-instance/openapi/v1/products":{"get":{"tags":["GPU Instances"],"parameters":[{"name":"billingMethod","in":"query","description":"Filter by billing method.","required":false,"schema":{"type":"string","example":"","items":{"type":"string","enum":["onDemand","monthly"]}}},{"name":"clusterId","in":"query","description":"Filter by cluster ID, 0-255 characters.","required":false,"schema":{"type":"string","example":""}},{"name":"gpuNum","in":"query","description":"Filter by number of GPUs, valid range 0-8.","required":false,"schema":{"type":"number","example":""}},{"name":"minCpuPerGpu","in":"query","description":"Filter by minimum CPU cores per GPU (>= 0).","required":false,"schema":{"type":"number","example":""}},{"name":"minMemoryPerGpu","in":"query","description":"Filter by minimum memory per GPU in GB (>= 0).","required":false,"schema":{"type":"number","example":""}},{"name":"minRootFSSize","in":"query","description":"Filter by minimum root filesystem size per GPU in GB (>= 0).","required":false,"schema":{"type":"number","example":""}},{"name":"productName","in":"query","description":"Filter by product name (fuzzy match), 0-255 characters.","required":false,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/gpu-instance-list-products","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/products"},"summary":"List GPU products","description":"Lists available GPU products with pricing and cluster filters.","security":[{"bearerAuth":[]}]}},"/gpu-instance/openapi/v1/endpoint/create":{"post":{"tags":["Serverless Endpoints"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/serverless-create-endpoint","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/endpoint/create"},"summary":"Create serverless endpoint","description":"Creates a serverless GPU endpoint that scales workers automatically.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"endpoint":{"type":"object","description":"Endpoint configuration.","required":true,"properties":{"appName":{"type":"string","description":"Application name, part of the Endpoint URL; defaults to the Endpoint ID."},"command":{"type":"string","description":"Container startup command."},"envs":{"type":"array","description":"Environment variables."},"healthy":{"type":"object","description":"Health check configuration."},"image":{"type":"string","description":"Container image.","required":true},"name":{"type":"string","description":"Endpoint name, 0-220 characters."},"ports":{"type":"array","description":"Port configuration."},"products":{"type":"array","description":"GPU product IDs the endpoint can run on."},"rootfsSize":{"type":"number","description":"Root filesystem size in GB.","required":true},"volumeMounts":{"type":"array","description":"Cloud storage mounts."},"workerConfig":{"type":"object","description":"Worker configuration.","required":true}}}}},"example":{"endpoint":{}}}}}}},"/gpu-instance/openapi/v1/endpoints":{"get":{"tags":["Serverless Endpoints"],"parameters":[{"name":"pageNum","in":"query","description":"Current page number.","required":true,"schema":{"type":"number","example":""}},{"name":"pageSize","in":"query","description":"Maximum number of items returned per page.","required":true,"schema":{"type":"number","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/serverless-list-endpoint","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/endpoints"},"summary":"List serverless endpoints","description":"Lists serverless GPU endpoints.","security":[{"bearerAuth":[]}]}},"/gpu-instance/openapi/v1/endpoint":{"get":{"tags":["Serverless Endpoints"],"parameters":[{"name":"id","in":"query","description":"Endpoint ID.","required":true,"schema":{"type":"string","example":""}}],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/serverless-get-endpoint","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/endpoint"},"summary":"Get serverless endpoint","description":"Gets a serverless endpoint by ID.","security":[{"bearerAuth":[]}]}},"/gpu-instance/openapi/v1/endpoint/update":{"post":{"tags":["Serverless Endpoints"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/serverless-update-endpoint","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/endpoint/update"},"summary":"Update serverless endpoint","description":"Updates a serverless endpoint configuration.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"clusterID":{"type":"string","description":"Cluster information. Required when mounting cloud storage; must match the cluster of the cloud storage. 0-255 characters."},"id":{"type":"string","description":"The Endpoint ID to update.","required":true},"name":{"type":"string","description":"Endpoint name."},"workerConfig":{"type":"object","description":"Worker configuration.","required":true,"properties":{"freeTimeout":{"type":"number","description":"Idle timeout in seconds.","required":true},"gpuNum":{"type":"number","description":"Number of GPUs per worker.","required":true},"maxConcurrent":{"type":"number","description":"Maximum concurrency.","required":true},"maxNum":{"type":"number","description":"Maximum number of workers.","required":true},"minNum":{"type":"number","description":"Minimum number of workers.","required":true},"requestTimeout":{"type":"number","description":"Request timeout in seconds.","required":true}}}}},"example":{"clusterID":"","id":"endpoint-123","name":"","workerConfig":{}}}}}}},"/gpu-instance/openapi/v1/endpoint/delete":{"post":{"tags":["Serverless Endpoints"],"parameters":[],"responses":{"401":{"description":"Bearer token required (Authorization header)","content":{"application/json":{}}}},"externalDocs":{"api_ref":"https://docs.novita.ai/api-reference/serverless-delete-endpoint","api_endpoint":"https://api.novita.ai/gpu-instance/openapi/v1/endpoint/delete"},"summary":"Delete serverless endpoint","description":"Deletes a serverless endpoint; all worker processes are removed automatically. Proceed with caution.","security":[{"bearerAuth":[]}],"requestBody":{"description":"","required":true,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"name":{"type":"string","description":"The ID of the endpoint to delete.","required":true}}},"example":{"name":"endpoint-123"}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"security":[{"bearerAuth":[]}]}