{
  "commercial": {
    "authority": "owner_approved_business_input",
    "commercial_use_in_customer_product": true,
    "official_offer_licence_agreement": true,
    "permission_contact": "mailto:support@ailoot.ai",
    "promo_discount_max_percent": 50,
    "reseller_licence_on_request": true,
    "subscription_effect": "reduces_effective_token_cost",
    "use_cases": [
      "customer_products",
      "agents",
      "applications",
      "automations"
    ],
    "written_project_permission_on_request": true
  },
  "company": {
    "authority": "owner_approved_business_input",
    "claims": [
      "established operating experience",
      "large client base",
      "stable service",
      "ongoing KPI control"
    ],
    "scale": {
      "clients": "hàng triệu khách hàng",
      "currency": null,
      "monthly_sales": "doanh số hàng tỷ mỗi tháng",
      "scope": "Công ty và danh mục dự án của công ty"
    },
    "source": "https://ailoot.ai/ru/",
    "source_language": "ru"
  },
  "connection": {
    "api_server": "https://api.ailoot.ai",
    "authentication": {
      "alternative_http_headers": [
        "x-api-key",
        "x-goog-api-key"
      ],
      "example": "Bearer ${AILOOT_API_KEY}",
      "header": "Authorization",
      "mode": "clientBearer",
      "realtime_mode": "Bearer header only",
      "scheme": "bearer",
      "type": "http"
    },
    "directory_placement": {
      "status": "unknown",
      "url": null
    },
    "mcp": {
      "endpoint": null,
      "status": "unknown"
    },
    "protocols": [
      {
        "id": "models",
        "label": "Model discovery",
        "operations": [
          {
            "http_method": "GET",
            "operation_id": "listModels",
            "path": "/v1/models",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "listGeminiModels",
            "path": "/v1beta/models",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "chat",
        "label": "OpenAI Chat Completions",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createChatCompletion",
            "path": "/v1/chat/completions",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "responses",
        "label": "OpenAI Responses",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createResponse",
            "path": "/v1/responses",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "messages",
        "label": "Anthropic Messages",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createMessage",
            "path": "/v1/messages",
            "status": "documented"
          },
          {
            "description": "Documented token-counting path; unavailable for models in the current public catalogue.",
            "http_method": "POST",
            "operation_id": "countMessageTokens",
            "path": "/v1/messages/count_tokens",
            "status": "unavailable"
          }
        ],
        "transport": "https"
      },
      {
        "id": "gemini",
        "label": "Gemini generateContent",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "generateContent",
            "path": "/v1beta/models/{model}:generateContent",
            "status": "documented"
          },
          {
            "http_method": "POST",
            "operation_id": "generateContentCompatibility",
            "path": "/antigravity/v1beta/models/{model}:generateContent",
            "status": "documented"
          },
          {
            "http_method": "POST",
            "operation_id": "streamGenerateContent",
            "path": "/v1beta/models/{model}:streamGenerateContent",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "embeddings",
        "label": "Text embeddings",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createEmbeddings",
            "path": "/v1/embeddings",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "images",
        "label": "OpenAI Images",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createImage",
            "path": "/v1/images/generations",
            "status": "documented"
          },
          {
            "http_method": "POST",
            "operation_id": "editImage",
            "path": "/v1/images/edits",
            "status": "documented"
          },
          {
            "description": "Save task_id and poll_url. Streaming is rejected. A task has processing/completed/failed status and an expires_at field.",
            "http_method": "POST",
            "operation_id": "createImageTask",
            "path": "/v1/images/generations/async",
            "status": "documented"
          },
          {
            "description": "Save task_id and poll_url. Streaming is rejected. A task has processing/completed/failed status and an expires_at field.",
            "http_method": "POST",
            "operation_id": "createImageEditTask",
            "path": "/v1/images/edits/async",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getImageTask",
            "path": "/v1/images/tasks/{task_id}",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "speech",
        "label": "Speech audio",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createSpeech",
            "path": "/v1/audio/speech",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "transcriptions",
        "label": "Audio transcription",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createTranscription",
            "path": "/v1/audio/transcriptions",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "videos",
        "label": "Video generation and retrieval",
        "operations": [
          {
            "description": "Save the returned task identifier. Poll status and download content; do not repeat creation after a timeout or unknown result. Required media parameters differ by model; this documented example is not a parameter guarantee for every video model.",
            "http_method": "POST",
            "operation_id": "createVideo",
            "path": "/v1/videos/generations",
            "status": "documented"
          },
          {
            "description": "Save the returned task identifier. Poll status and download content; do not repeat creation after a timeout or unknown result. Required media parameters differ by model; this documented example is not a parameter guarantee for every video model.",
            "http_method": "POST",
            "operation_id": "createVideoCompatible",
            "path": "/v1/videos",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideo",
            "path": "/v1/videos/{request_id}",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideoContent",
            "path": "/v1/videos/{request_id}/content",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideoGeneration",
            "path": "/v1/videos/generations/{request_id}",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideoGenerationContent",
            "path": "/v1/videos/generations/{request_id}/content",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "music",
        "label": "Music generation",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createMusic",
            "path": "/v1/music/generations",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "systemone",
        "label": "System One decisions",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createSystemOne",
            "path": "/v1/systemone",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "realtime",
        "label": "Realtime voice WebSocket",
        "operations": [
          {
            "http_method": "GET",
            "operation_id": "openRealtimeSession",
            "path": "/v1/realtime",
            "status": "documented"
          }
        ],
        "transport": "websocket"
      }
    ],
    "provenance": {
      "approved_offer_sha256": "03ba9f99acb815bdfd97051de0b513aeb11dcad811723225ed2f1192cddab0ca",
      "client_contract_sha256": "73c014cafc05d781ab92ee7cb6a5546a07dca7c1066228824cb404e7f623df22",
      "proof_scope": "accepted-static-public-contract",
      "public_operation_count": 26,
      "sources": [
        {
          "name": "public-api-contract-v1.json",
          "sha256": "73c014cafc05d781ab92ee7cb6a5546a07dca7c1066228824cb404e7f623df22"
        },
        {
          "name": "openapi-contract-v1.md",
          "sha256": "eebcd42781235054b93f763d84cb0fbc27c6c5762515c2b4990c390accba8763"
        },
        {
          "name": "openapi.py",
          "sha256": "0e502577f8a9a347a3ba5a514294a336b06aea78cac41b9fa1e4871b69fbf4e8"
        },
        {
          "name": "agent-facts-contract-v1.json",
          "sha256": "856af0544f85dc29b915132a3c762698ae9162555b24b79cfabfec63b05bc43a"
        },
        {
          "name": "locale-routes.py",
          "sha256": "920d2b69bf735d7298eb24f06cf7bd4eb373b5f76639b61fb6e98e8f94bfec7a"
        },
        {
          "name": "approved-offer-copy-v1.json",
          "sha256": "03ba9f99acb815bdfd97051de0b513aeb11dcad811723225ed2f1192cddab0ca"
        },
        {
          "name": "offer-copy.py",
          "sha256": "fe062036873acf8abb23a182248ce508c3679979455dadc634dcd5063d60cb1f"
        }
      ]
    },
    "sdk_validation": {
      "status": "unknown"
    },
    "status": "documented"
  },
  "documentation": {
    "api_guide": {
      "status": "documented",
      "url": "https://ailoot.ai/openapi.md"
    },
    "entrypoints": {
      "docs": "https://ailoot.ai/docs/vi/",
      "integrations": "https://ailoot.ai/integrations/vi/",
      "models": "https://ailoot.ai/models/vi/"
    },
    "licence": {
      "label": "Đề nghị giao kết và thỏa thuận cấp phép",
      "url": "https://ailoot.ai/legal/offer?lang=vi"
    },
    "locale": "vi",
    "offer": {
      "label": "Đề nghị giao kết và thỏa thuận cấp phép",
      "url": "https://ailoot.ai/legal/offer?lang=vi"
    },
    "openapi": {
      "format": "3.1.1",
      "status": "documented",
      "url": "https://ailoot.ai/openapi.json"
    },
    "provenance": {
      "approved_offer_sha256": "03ba9f99acb815bdfd97051de0b513aeb11dcad811723225ed2f1192cddab0ca",
      "locale_routes_sha256": "920d2b69bf735d7298eb24f06cf7bd4eb373b5f76639b61fb6e98e8f94bfec7a"
    },
    "reseller_licence": {
      "label": "Yêu cầu giấy phép bán lại",
      "url": "mailto:support@ailoot.ai"
    },
    "support": {
      "url": "mailto:support@ailoot.ai"
    },
    "written_project_permission": {
      "url": "mailto:support@ailoot.ai"
    }
  },
  "integrations": [
    {
      "application": "VS Code + Copilot Chat",
      "application_id": "vscode-copilot-byok",
      "compatibility_scope": {
        "conditions": "Trước khi chạy, gọi GET /v1/models bằng khóa Ailoot của bạn. Chọn ID mô hình chính xác có các phương thức POST /v1/chat/completions, POST /v1/responses, POST /v1/messages rồi dùng ID đó trong cấu hình. Với tác tử, hãy kiểm tra cả công cụ và tính năng mà phiên bản ứng dụng của bạn cần. url là đường dẫn endpoint ĐẦY ĐỦ. Các giá trị apiType: chat-completions, responses (url .../v1/responses), messages (url .../v1/messages). BYOK hoạt động không cần gói Copilot hay đăng nhập GitHub, nhưng chỉ cho trò chuyện/tác nhân — gợi ý ngay trong mã vẫn dùng Copilot. Quản trị viên tổ chức (Business/Enterprise) có thể tắt chính sách BYOK. Các giới hạn token ở trên chỉ là ví dụ; hãy dùng giá trị trong danh mục. Các ví dụ này đặt vision = false: bản chụp danh mục ngày 2026-09-30 chỉ khai báo văn bản cho GPT/OpenAI Chat và Claude/Anthropic Messages. Nếu phiên bản VS Code của bạn có vision, chỉ bật cho mô hình mà thẻ danh mục hiện tại khai báo đầu vào image trong định dạng API đã chọn; có trường trong máy khách không xác nhận mô hình đã chọn hỗ trợ hình ảnh.",
        "description": "Tiện ích mở rộng trình soạn thảo · OpenAI Chat, OpenAI Responses, Anthropic Messages",
        "formats": [
          "chat",
          "responses",
          "messages"
        ],
        "kind": "documented-subset",
        "runtime_validation": null
      },
      "evidence": {
        "catalogue_sha256": "e9616a31c432591c1e9f1d7e7ec6931f9c83ae8c134f55c5c18cf273bdd64a47",
        "catalogue_url": "https://ailoot.ai/integrations/vi/",
        "guide_sha256": "5e0255fd8fb113f319b032f9ab710260c9358c8b1d47dc24882daf4cd7f49b0d",
        "proof_scope": "accepted-static-integration-content",
        "public_api_contract_sha256": "73c014cafc05d781ab92ee7cb6a5546a07dca7c1066228824cb404e7f623df22"
      },
      "guide_url": "https://ailoot.ai/docs/vi/integrations/vscode-copilot-byok/",
      "methods": [
        {
          "http_method": "GET",
          "operation_id": "listModels",
          "path": "/v1/models",
          "status": "documented-in-guide"
        },
        {
          "http_method": "POST",
          "operation_id": "createChatCompletion",
          "path": "/v1/chat/completions",
          "status": "documented-in-guide"
        },
        {
          "http_method": "POST",
          "operation_id": "createResponse",
          "path": "/v1/responses",
          "status": "documented-in-guide"
        },
        {
          "http_method": "POST",
          "operation_id": "createMessage",
          "path": "/v1/messages",
          "status": "documented-in-guide"
        }
      ],
      "schema": "ailoot-integration-facts-v1",
      "source_revision": "5e0255fd8fb113f319b032f9ab710260c9358c8b1d47dc24882daf4cd7f49b0d",
      "version_match": null,
      "versions": null
    }
  ],
  "models": [],
  "page": {
    "description": "Kết nối Claude với VS Code qua Copilot Chat bằng khóa API Ailoot; cấu hình Anthropic Messages và kiểm tra endpoint.",
    "family": "docs",
    "locale": "vi",
    "title": "VS Code + Copilot Chat — tài liệu Ailoot",
    "url": "https://ailoot.ai/docs/vi/integrations/vscode-copilot-byok/"
  },
  "product": {
    "commercial": {
      "authority": "owner_approved_business_input",
      "commercial_use_in_customer_product": true,
      "official_offer_licence_agreement": true,
      "permission_contact": "mailto:support@ailoot.ai",
      "promo_discount_max_percent": 50,
      "reseller_licence_on_request": true,
      "subscription_effect": "reduces_effective_token_cost",
      "use_cases": [
        "customer_products",
        "agents",
        "applications",
        "automations"
      ],
      "written_project_permission_on_request": true
    },
    "company": {
      "authority": "owner_approved_business_input",
      "claims": [
        "established operating experience",
        "large client base",
        "stable service",
        "ongoing KPI control"
      ],
      "scale": {
        "clients": "hàng triệu khách hàng",
        "currency": null,
        "monthly_sales": "doanh số hàng tỷ mỗi tháng",
        "scope": "Công ty và danh mục dự án của công ty"
      },
      "source": "https://ailoot.ai/ru/",
      "source_language": "ru"
    },
    "identity": {
      "id": "semen-router",
      "url": "https://ailoot.ai/"
    },
    "name": "Ailoot",
    "provenance": {
      "approved_offer_sha256": "03ba9f99acb815bdfd97051de0b513aeb11dcad811723225ed2f1192cddab0ca",
      "client_contract_sha256": "73c014cafc05d781ab92ee7cb6a5546a07dca7c1066228824cb404e7f623df22",
      "proof_scope": "accepted-static-public-contract",
      "public_operation_count": 26,
      "sources": [
        {
          "name": "public-api-contract-v1.json",
          "sha256": "73c014cafc05d781ab92ee7cb6a5546a07dca7c1066228824cb404e7f623df22"
        },
        {
          "name": "openapi-contract-v1.md",
          "sha256": "eebcd42781235054b93f763d84cb0fbc27c6c5762515c2b4990c390accba8763"
        },
        {
          "name": "openapi.py",
          "sha256": "0e502577f8a9a347a3ba5a514294a336b06aea78cac41b9fa1e4871b69fbf4e8"
        },
        {
          "name": "agent-facts-contract-v1.json",
          "sha256": "856af0544f85dc29b915132a3c762698ae9162555b24b79cfabfec63b05bc43a"
        },
        {
          "name": "locale-routes.py",
          "sha256": "920d2b69bf735d7298eb24f06cf7bd4eb373b5f76639b61fb6e98e8f94bfec7a"
        },
        {
          "name": "approved-offer-copy-v1.json",
          "sha256": "03ba9f99acb815bdfd97051de0b513aeb11dcad811723225ed2f1192cddab0ca"
        },
        {
          "name": "offer-copy.py",
          "sha256": "fe062036873acf8abb23a182248ce508c3679979455dadc634dcd5063d60cb1f"
        }
      ]
    },
    "public_urls": {
      "api_guide": "https://ailoot.ai/openapi.md",
      "entrypoints": {
        "docs": "https://ailoot.ai/docs/vi/",
        "integrations": "https://ailoot.ai/integrations/vi/",
        "models": "https://ailoot.ai/models/vi/"
      },
      "offer": "https://ailoot.ai/legal/offer?lang=vi",
      "openapi": "https://ailoot.ai/openapi.json",
      "page": "https://ailoot.ai/docs/vi/integrations/vscode-copilot-byok/",
      "support": "mailto:support@ailoot.ai"
    },
    "schema": "ailoot-product-facts-v1",
    "source_revision": "2154b412badf27c6120dad63e59edf03142be412279960aaca0bab90736f505f",
    "supported_access_modes": [
      {
        "id": "models",
        "label": "Model discovery",
        "operations": [
          {
            "http_method": "GET",
            "operation_id": "listModels",
            "path": "/v1/models",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "listGeminiModels",
            "path": "/v1beta/models",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "chat",
        "label": "OpenAI Chat Completions",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createChatCompletion",
            "path": "/v1/chat/completions",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "responses",
        "label": "OpenAI Responses",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createResponse",
            "path": "/v1/responses",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "messages",
        "label": "Anthropic Messages",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createMessage",
            "path": "/v1/messages",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "gemini",
        "label": "Gemini generateContent",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "generateContent",
            "path": "/v1beta/models/{model}:generateContent",
            "status": "documented"
          },
          {
            "http_method": "POST",
            "operation_id": "generateContentCompatibility",
            "path": "/antigravity/v1beta/models/{model}:generateContent",
            "status": "documented"
          },
          {
            "http_method": "POST",
            "operation_id": "streamGenerateContent",
            "path": "/v1beta/models/{model}:streamGenerateContent",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "embeddings",
        "label": "Text embeddings",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createEmbeddings",
            "path": "/v1/embeddings",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "images",
        "label": "OpenAI Images",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createImage",
            "path": "/v1/images/generations",
            "status": "documented"
          },
          {
            "http_method": "POST",
            "operation_id": "editImage",
            "path": "/v1/images/edits",
            "status": "documented"
          },
          {
            "description": "Save task_id and poll_url. Streaming is rejected. A task has processing/completed/failed status and an expires_at field.",
            "http_method": "POST",
            "operation_id": "createImageTask",
            "path": "/v1/images/generations/async",
            "status": "documented"
          },
          {
            "description": "Save task_id and poll_url. Streaming is rejected. A task has processing/completed/failed status and an expires_at field.",
            "http_method": "POST",
            "operation_id": "createImageEditTask",
            "path": "/v1/images/edits/async",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getImageTask",
            "path": "/v1/images/tasks/{task_id}",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "speech",
        "label": "Speech audio",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createSpeech",
            "path": "/v1/audio/speech",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "transcriptions",
        "label": "Audio transcription",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createTranscription",
            "path": "/v1/audio/transcriptions",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "videos",
        "label": "Video generation and retrieval",
        "operations": [
          {
            "description": "Save the returned task identifier. Poll status and download content; do not repeat creation after a timeout or unknown result. Required media parameters differ by model; this documented example is not a parameter guarantee for every video model.",
            "http_method": "POST",
            "operation_id": "createVideo",
            "path": "/v1/videos/generations",
            "status": "documented"
          },
          {
            "description": "Save the returned task identifier. Poll status and download content; do not repeat creation after a timeout or unknown result. Required media parameters differ by model; this documented example is not a parameter guarantee for every video model.",
            "http_method": "POST",
            "operation_id": "createVideoCompatible",
            "path": "/v1/videos",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideo",
            "path": "/v1/videos/{request_id}",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideoContent",
            "path": "/v1/videos/{request_id}/content",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideoGeneration",
            "path": "/v1/videos/generations/{request_id}",
            "status": "documented"
          },
          {
            "http_method": "GET",
            "operation_id": "getVideoGenerationContent",
            "path": "/v1/videos/generations/{request_id}/content",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "music",
        "label": "Music generation",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createMusic",
            "path": "/v1/music/generations",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "systemone",
        "label": "System One decisions",
        "operations": [
          {
            "http_method": "POST",
            "operation_id": "createSystemOne",
            "path": "/v1/systemone",
            "status": "documented"
          }
        ],
        "transport": "https"
      },
      {
        "id": "realtime",
        "label": "Realtime voice WebSocket",
        "operations": [
          {
            "http_method": "GET",
            "operation_id": "openRealtimeSession",
            "path": "/v1/realtime",
            "status": "documented"
          }
        ],
        "transport": "websocket"
      }
    ]
  },
  "schema": "ailoot-public-facts-v1",
  "sourceRevision": "2154b412badf27c6120dad63e59edf03142be412279960aaca0bab90736f505f"
}
