コンテンツへスキップ
CADCAMFUN
ドキュメント

ドキュメント

AI のセッションとアクション

プロバイダー、資格情報、会話、ストリーミング ターン、アクションの呼び出し、ブリッジ トークン、スキル、およびセッションの回復。

英語から自動翻訳されています。 英語の原文を見る

プレイグラウンド

これらのリクエストを独自の実行中のサイドカーに送信します。値はこのブラウザ内に残ります。

接続されていません
仕組み

サイドカーは起動時に選択されたループバック ポートをリッスンし、それをそのポートに出力します。 ready ライン;その URL を使用し、 CADCAMFUN_TOKEN で始まりました。リクエストはこのページからそのアドレスに直接送信されます。

サイドカーは CORS ヘッダーを Tauri オリジンと http://localhost または http://127.0.0.1 どのポートでも。ホストされているドキュメントからはブラウザーが応答をブロックするため、ドキュメントをローカルで実行します (bun run dev で packages/web) プレイグラウンドを使用するか、リクエストをcurlとしてコピーします。実際のデータに触れることなく実験するには、次のようにしてサイドカーを開始します。 CADCAMFUN_DATA_DIR 使い捨てディレクトリを指す - を参照 aPI のチュートリアル.

運営

52 エンドポイント( ai サイドカー自体から生成されたグループ OpenAPIドキュメント。保護された操作には時間がかかります Authorization: Bearer $CADCAMFUN_TOKEN;見る 認証。行動と制限は次のとおりです サブシステムガイド.

得る /api/ai/actions ai.actions
役職 /api/ai/actions/invoke ai.invokeAction
役職 /api/ai/bridge/tokens ai.issueBridgeToken
得る /api/ai/bridge/tokens ai.bridgeTokens
消去 /api/ai/bridge/tokens/{id} ai.revokeBridgeToken
得る /api/ai/agents ai.agents
役職 /api/ai/sessions/control ai.sessionControl
役職 /api/ai/sessions/state ai.sessionState
役職 /api/ai/sessions/remove ai.removeSession
得る /api/ai/extensions/mcp ai.mcpServers
置く /api/ai/extensions/mcp ai.saveMcpServer
消去 /api/ai/extensions/mcp/{name} ai.deleteMcpServer
消去 /api/ai/extensions/plugins/{id} ai.removeExtensionPlugin
置く /api/ai/extensions/plugins/{id} ai.toggleExtensionPlugin
得る /api/ai/extensions/plugins ai.extensionPlugins
役職 /api/ai/extensions/plugins ai.installExtensionPlugin
得る /api/ai/extensions/mods ai.extensionMods
置く /api/ai/extensions/mods/{id} ai.toggleExtensionMod
消去 /api/ai/extensions/mods/{id} ai.removeExtensionMod
得る /api/ai/modes ai.modes
得る /api/ai/skills ai.skills
置く /api/ai/skills ai.saveSkill
消去 /api/ai/skills/{name} ai.deleteSkill
置く /api/ai/credentials ai.setCredentials
消去 /api/ai/credentials/{provider} ai.clearCredentials
得る /api/ai/status ai.status
得る /api/ai/models ai.models
得る /api/ai/providers ai.providers
役職 /api/ai/models/refresh ai.refreshModels
得る /api/ai/prompts ai.prompts
役職 /api/ai/title ai.title
役職 /api/ai/design-analysis ai.designAnalysis
役職 /api/ai/machining-parameters ai.machiningParameters
役職 /api/ai/gcode-optimization ai.gcodeOptimization
役職 /api/ai/design-suggestions ai.designSuggestions
役職 /api/ai/chat ai.chat
役職 /api/ai/chat/stream ai.chatStream
役職 /api/ai/sessions/prompt ai.sessionPrompt
得る /api/ai/sessions/{sessionId}/stream ai.sessionStream
得る /api/ai/sessions ai.sessionList
得る /api/ai/sessions/{sessionId}/messages ai.sessionMessages
役職 /api/ai/chat/queue ai.chatQueue
役職 /api/ai/chat/abort ai.chatAbort
役職 /api/ai/permission/reply ai.permissionReply
役職 /api/ai/completion ai.completion
役職 /api/ai/analyze-gcode ai.analyzeGcode
役職 /api/ai/gcode ai.gcode
役職 /api/ai/toolpath-analysis ai.toolpathAnalysis
役職 /api/ai/feedback ai.feedback
役職 /api/ai/proxy ai.proxy
役職 /api/ai/oauth/authorize ai.oauthAuthorize
役職 /api/ai/oauth/complete ai.oauthComplete
3D での AI セッションとアクション オペレーション ドラッグして周回します · スクロールしてズーム · 右ドラッグしてパンします
オペレーションごとに 1 つのブロック (52)、このページのリソース セクションごとにスタックされ、メソッドごとに色分けされます: 緑色の GET、オレンジ色の POST、青色の PUT、紫色の PATCH、赤色の DELETE。ビルド時に OpenAPI ドキュメントから生成されます。

/api/ai/actions

得る /api/ai/actions # ai.actions

必要 Authorization: Bearer <token>.

応答
200 物体 application/json
{
  tools: Array<{
    id: string
    description: string
    kind: "read" | "write" | "destructive"
    actions: Array<{
      id: string
      name: string
      kind: "read" | "write" | "destructive"
    }>
    parameters: object
  }>
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
GET /api/ai/actions
{
  "tools": [
    {
      "id": "cad",
      "description": "Read the open drawing. All actions are read-only.\n\nActions\n- describe: the drawing: counts, bounds and layers. Start here.\n- check: model checks (sizes, rotations, Boolean operands, duplicates, floating parts); fix findings after modelling.\n- relations: bounds, placement, distances and parameter dependencies; equal names do not bind parameters.\n- grep: search ids, names, layers and properties; includes each parametric hit's revision.\n- vision: the CAD viewport plus scene evidence as an image.\n- inspect_elements: full properties and bounds of elements, paged.\n- inspect_layers: the workspace layers and the active one.\n- inspect_search: elements whose text matches a query, paged.\n- inspect_property: one property of one element by path, paged by characters.\n- parametric_validate: rebuild a parametric history and report what it cannot build.\n- parametric_inspect: history, parameters and report of one parametric part.\n- drawing: technical sheet from one elementId or history; options (sheet, projection, views, section, detail: see schema). SVG, dimensions, callouts, warnings; exact B-rep edges where available; nothing stored.\n- parametric_test: run parameter variants; report bodies, volumes and dimensional checks.\n- parametric_dfm: manufacturability findings for a history or an existing part.\n- parametric_exact: exact B-rep per body (volume, area, centroid, throughHoles, faces, surfaces) or why mesh-only; STEP on request.\n- exact: every solid on the exact kernel: validity, volume, bounds, holes, and whether CAM machines it by features or as a 3D surface, with why.\n- assembly: exact interference (clash volumes), bill of materials with mass, hole joints, fasteners still missing.\n- parametric_fastener: thread, tap drill, clearance and counterbore of a metric size.\n- parametric_recipe: standard part history from `recipe` (mounting_plate, flange, l_bracket, stepped_shaft, pipe_bend, duct_transition, enclosure) and `params`; cad_edit.parametric_recipe_create stores it.\n- parametric_from_element: history with named parameters from an existing solid, flat shape or component; cad_edit.parametric_convert stores it.\n\nParameters (mm, radians; ids are read, never invented)\n- describe, check, inspect_layers: none.\n- relations: firstId, secondId - two different existing ids.\n- grep: query (1-200 chars), layerId, parametricOnly, includeParameters, offset, limit (1-50).\n- vision: focus - wha
…
SDKの例
ai.actions
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.ai.actions()
curl
GET /api/ai/actions
curl --request GET "${CADCAMFUN_URL}/api/ai/actions" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
役職 /api/ai/actions/invoke # ai.invokeAction

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  projectId: string
  drawingId?: string | null
  callId?: string | null
  tool: string
  input: object
}
応答
200 物体 application/json
{
  tool: string
  action: string
  result: unknown
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.invokeAction
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiInvokeActionInput
const result = await client.ai.invokeAction({
  projectId: "",
  drawingId: "",
  callId: "",
  tool: "",
  input: {}
})
curl
POST /api/ai/actions/invoke
curl --request POST "${CADCAMFUN_URL}/api/ai/actions/invoke" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/bridge

役職 /api/ai/bridge/tokens # ai.issueBridgeToken

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  name?: string | null
  projectId: string
  mode: "read" | "write"
  days?: number | "Infinity" | "-Infinity" | "NaN" | null
}
応答
200 物体 application/json
{
  info: {
    id: string
    name: string
    projectId: string
    mode: "read" | "write"
    userId: string
    createdAt: string
    expiresAt: string
  }
  token: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.issueBridgeToken
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiIssueBridgeTokenInput
const result = await client.ai.issueBridgeToken({
  name: "",
  projectId: "",
  mode: "read",
  days: 0
})
curl
POST /api/ai/ブリッジ/トークン
curl --request POST "${CADCAMFUN_URL}/api/ai/bridge/tokens" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
得る /api/ai/bridge/tokens # ai.bridgeTokens

必要 Authorization: Bearer <token>.

応答
200 配列<オブジェクト> application/json
Array<{
  id: string
  name: string
  projectId: string
  mode: "read" | "write"
  userId: string
  createdAt: string
  expiresAt: string
}>
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
/api/ai/bridge/トークンを取得する
[]
SDKの例
ai.bridgeTokens
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.ai.bridgeTokens()
curl
/api/ai/bridge/トークンを取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/bridge/tokens" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
消去 /api/ai/bridge/tokens/{id} # ai.revokeBridgeToken

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
iD パス 弦 必須
応答
200 物体 application/json
{
  message: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.revokeBridgeToken
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiRevokeBridgeTokenInput
const result = await client.ai.revokeBridgeToken({
  id: "<id>"
})
curl
/api/ai/bridge/tokens/{id} を削除します
curl --request DELETE "${CADCAMFUN_URL}/api/ai/bridge/tokens/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/agents

得る /api/ai/agents # ai.agents

必要 Authorization: Bearer <token>.

応答
200 配列<オブジェクト> application/json
Array<{
  id: string
  title: string
  description: string
  tools: string[]
  edits: boolean
  kind?: string | null
  canEdit?: boolean | null
  delegates?: boolean | null
}>
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
/api/ai/agents を取得する
[
  {
    "id": "general",
    "title": "General",
    "description": "Does drawing and machining itself, and delegates separable work to subagents (background tasks included).",
    "tools": [],
    "edits": true
  },
  {
    "id": "cad",
    "title": "CAD",
    "description": "Drawing and 3D modelling. Reads the machining side but does not change operations, G-code or the machining libraries.",
    "tools": [],
    "edits": true
  },
  {
    "id": "cam",
    "title": "CAM",
    "description": "Machining: operations, G-code, verification and the machining libraries. Reads the drawing but does not change it.",
    "tools": [],
    "edits": true
  }
]
SDKの例
ai.agents
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.ai.agents()
curl
/api/ai/agents を取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/agents" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/sessions

役職 /api/ai/sessions/control # ai.sessionControl

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  sessionId: string
  projectId?: string | null
  action: "status" | "compact" | "cancel_task" | "answer_question" | "reject_question" | "reply_permission" | "consolidate_memory" | "context" | "acceptance" | "set_acceptance"
  criteria?: unknown | null
  taskId?: string | null
  requestId?: string | null
  answers?: string[][] | null
  decision?: "once" | "always" | "reject" | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 物体 application/json
{
  goal?: {
    objective: string
    status: "active" | "paused" | "blocked" | "usage_limited" | "budget_limited" | "complete"
    iteration: number | "Infinity" | "-Infinity" | "NaN"
    tokensUsed: number | "NaN"
    tokenBudget?: number | "NaN" | null
  } | null
  permissions?: Array<{
    requestId: string
    sessionId: string
    permission: string
    patterns: string[]
  }> | null
  busy: boolean
  text: string
  tasks: Array<{
    id: string
    agent: string
    description: string
    status: "queued" | "running" | "completed" | "error" | "cancelled"
    background: boolean
    text?: string | null
    error?: string | null
    createdAt?: number | "Infinity" | "-Infinity" | "NaN" | null
    startedAt?: number | "Infinity" | "-Infinity" | "NaN" | null
    finishedAt?: number | "Infinity" | "-Infinity" | "NaN" | null
  }>
  questions: Array<{
    requestId: string
    questions: Array<{
      header: string
      question: string
      options: Array<{
        label: string
        description: string
      }>
      multiple?: boolean | null
      custom?: boolean | null
    }>
  }>
  engineeringAcceptance?: {
    status: "accepted" | "failed" | "unmeasured" | "stale" | "not_configured"
    projectId: string
    drawingId: string
    revision: string
    criteriaDigest?: string | null
    checks: Array<{
      id: string
      status: "pass" | "fail" | "stale"
      reason?: string | null
      report?: unknown | null
    }>
    note: string
  } | null
  context: {
    memory?: {
      enabled: boolean
      memoryEnabled: boolean
      minHours: number | "Infinity" | "-Infinity" | "NaN"
      minSessions: number | "NaN"
      lastBrainAt: number | "NaN"
      hoursSinceLastBrain: number | "NaN"
      sessionsSinceLastBrain: number | "NaN"
      shouldTrigger: boolean
    } | null
    source: "host-config"
    auto: boolean
    prune: boolean
    reserved?: number | "Infinity" | "-Infinity" | "NaN" | null
    provider?: string | null
    model?: string | null
    contextWindow?: number | "Infinity" | "-Infinity" | "NaN" | null
    maxOutput?: number | "Infinity" | "-Infinity" | "NaN" | null
    inputWindow?: number | "Infinity" | "-Infinity" | "NaN" | null
    requestOutput?: number | "Infinity" | "-Infinity" | "NaN" | null
    compactAt?: number | "Infinity" | "-Infinity" | "NaN" | null
    tokens?: number | "Infinity" | "-Infinity" | "NaN" | null
    compacted: boolean
    breakdown?: {
      estimatedTotal: number | "Infinity" | "-Infinity" | "NaN"
      categories: Array<{
        category: string
        tokens: number | "NaN"
      }>
    } | null
  }
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.sessionControl
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiSessionControlInput
const result = await client.ai.sessionControl({
  sessionId: "",
  projectId: "",
  action: "status",
  criteria: null,
  taskId: "",
  requestId: "",
  answers: [
    [
      ""
    ]
  ],
  decision: "once",
  model: {}
})
curl
POST /api/ai/sessions/control
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/control" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
役職 /api/ai/sessions/state # ai.sessionState

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  sessionId: string
  projectId?: string | null
}
応答
200 物体 application/json
{
  busy: boolean
  text: string
  error?: string | null
  tasks?: Array<{
    id: string
    agent: string
    description: string
    status: "queued" | "running" | "completed" | "error" | "cancelled"
    background: boolean
    text?: string | null
    error?: string | null
    createdAt?: number | "Infinity" | "-Infinity" | "NaN" | null
    startedAt?: number | null
    finishedAt?: number | null
  }> | null
  events?: Array<{
    type: "tool_call"
    sessionId: string
    agent?: string
    callId: string
    tool: string
    input: unknown
  } | {
    type: "tool_result"
    sessionId: string
    agent?: string
    callId: string
    tool: string
    ok: boolean
    output: string
    images?: string[]
  } | {
    type: "todo"
    sessionId: string
    todos: Array<{
      id?: string
      content: string
      status: "pending" | "in_progress" | "completed" | "cancelled"
      priority?: string
    }>
  } | {
    type: "tool_diagnostic"
    sessionId: string
    agent?: string
    callId: string
    tool: string
    kind: "argument" | "execution" | "partial" | "verification"
    severity: "error" | "warning" | "info"
    message: string
    recovery?: string
    mutationApplied?: boolean
  }> | null
  usage?: {
    inputTokens: number
    outputTokens: number
  } | null
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.sessionState
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiSessionStateInput
const result = await client.ai.sessionState({
  sessionId: "",
  projectId: ""
})
curl
POST /api/ai/sessions/state
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/state" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
役職 /api/ai/sessions/remove # ai.removeSession

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  sessionId: string
  projectId?: string | null
}
応答
200 物体 application/json
{
  removed: boolean
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.removeSession
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiRemoveSessionInput
const result = await client.ai.removeSession({
  sessionId: "",
  projectId: ""
})
curl
POST /api/ai/sessions/remove
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/remove" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
役職 /api/ai/sessions/prompt # ai.sessionPrompt

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  permissionMode?: "auto" | "ask" | "approve" | null
  agent?: string | null
  mode?: string | null
  attachments?: Array<{
    name: string
    mime?: string | null
    data: string
    encoding?: "base64" | "text" | null
  }> | null
  message?: string | null
  sessionId?: string | null
  projectId?: string | null
  drawingId?: string | null
  context?: string | null
  includeContext?: boolean | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 物体 application/json
{
  sessionId: string
  seq: number | "Infinity" | "-Infinity" | "NaN"
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
409 ConflictEncoded application/json
ConflictEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.sessionPrompt
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/sessions/prompt`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/ai/sessions/prompt
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/prompt" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
得る /api/ai/sessions/{sessionId}/stream # ai.sessionStream

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
sessionId パス 弦 必須
後 クエリ 弦 | null オプション
応答
200 物体 text/event-stream
{
  id: string | null
  event: string
  data: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.sessionStream
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/sessions/${sessionId}/stream`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
GET /api/ai/sessions/{sessionId}/stream
curl --request GET "${CADCAMFUN_URL}/api/ai/sessions/<sessionId>/stream" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
得る /api/ai/sessions # ai.sessionList

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
projectId クエリ 弦 必須
限界 クエリ 弦 | null オプション
応答
200 配列<オブジェクト> application/json
Array<{
  id: string
  projectId: string
  title: string
  createdAt: string | null
  updatedAt: string | null
  busy: boolean
}>
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.sessionList
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/sessions`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/sessions を取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/sessions?projectId=<projectId>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
得る /api/ai/sessions/{sessionId}/messages # ai.sessionMessages

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
sessionId パス 弦 必須
前に クエリ 弦 | null オプション
限界 クエリ 弦 | null オプション
応答
200 物体 application/json
{
  sessionId: string
  messages: Array<{
    id: string
    role: "user" | "assistant"
    text: string
    createdAt: string | null
    agent: string | null
    model: string | null
    error: string | null
    truncated: boolean
    tools: Array<{
      callId: string
      tool: string
      status: "pending" | "running" | "completed" | "error"
      input?: unknown | null
      output: string
      truncated: boolean
    }>
  }>
  before: string | null
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.sessionMessages
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/sessions/${sessionId}/messages`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
GET /api/ai/sessions/{sessionId}/messages
curl --request GET "${CADCAMFUN_URL}/api/ai/sessions/<sessionId>/messages" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/extensions

得る /api/ai/extensions/mcp # ai.mcpServers

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
projectId クエリ 弦 必須
応答
200 物体 application/json
{
  servers: Array<{
    name: string
    config: {
      type: "local"
      command: string[]
      environment?: {
        [key: string]: string
      } | null
      enabled: boolean
      timeout?: number | "Infinity" | "-Infinity" | "NaN" | null
    } | {
      type: "remote"
      url: string
      headers?: {
        [key: string]: string
      } | null
      oauth?: false
    status: string
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.mcpServers
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/mcp`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/extensions/mcp を取得します
curl --request GET "${CADCAMFUN_URL}/api/ai/extensions/mcp?projectId=<projectId>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
置く /api/ai/extensions/mcp # ai.saveMcpServer

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  projectId: string
  name: string
  config: {
    type: "local"
    command: string[]
    environment?: {
      [key: string]: string
    } | null
    enabled: boolean
    timeout?: number | "Infinity" | "-Infinity" | "NaN" | null
  } | {
    type: "remote"
    url: string
    headers?: {
      [key: string]: string
    } | null
    oauth?: false
}
応答
200 物体 application/json
{
  servers: Array<{
    name: string
    config: {
      type: "local"
      command: string[]
      environment?: {
        [key: string]: string
      } | null
      enabled: boolean
      timeout?: number | "Infinity" | "-Infinity" | "NaN" | null
    } | {
      type: "remote"
      url: string
      headers?: {
        [key: string]: string
      } | null
      oauth?: false
    status: string
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.saveMcpServer
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/mcp`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
PUT /api/ai/extensions/mcp
curl --request PUT "${CADCAMFUN_URL}/api/ai/extensions/mcp" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
消去 /api/ai/extensions/mcp/{name} # ai.deleteMcpServer

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
名前 パス 弦 必須
projectId クエリ 弦 必須
応答
200 物体 application/json
{
  servers: Array<{
    name: string
    config: {
      type: "local"
      command: string[]
      environment?: {
        [key: string]: string
      } | null
      enabled: boolean
      timeout?: number | "Infinity" | "-Infinity" | "NaN" | null
    } | {
      type: "remote"
      url: string
      headers?: {
        [key: string]: string
      } | null
      oauth?: false
    status: string
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.deleteMcpServer
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/mcp/${name}`, {
  method: "DELETE",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/extensions/mcp/{name} を削除します
curl --request DELETE "${CADCAMFUN_URL}/api/ai/extensions/mcp/<name>?projectId=<projectId>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
消去 /api/ai/extensions/plugins/{id} # ai.removeExtensionPlugin

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
iD パス 弦 必須
応答
200 物体 application/json
{
  plugins: Array<{
    id: string
    name: string
    version: string
    enabled: boolean
    tools: number | "Infinity" | "-Infinity" | "NaN"
    mods: number | "Infinity" | "-Infinity" | "NaN"
    modes: number | "Infinity" | "-Infinity" | "NaN"
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.removeExtensionPlugin
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/plugins/${id}`, {
  method: "DELETE",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/extensions/plugins/{id} を削除します
curl --request DELETE "${CADCAMFUN_URL}/api/ai/extensions/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
置く /api/ai/extensions/plugins/{id} # ai.toggleExtensionPlugin

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
iD パス 弦 必須
リクエスト本文 · 必須 · application/json
{
  enabled: boolean
}
応答
200 物体 application/json
{
  plugins: Array<{
    id: string
    name: string
    version: string
    enabled: boolean
    tools: number | "Infinity" | "-Infinity" | "NaN"
    mods: number | "Infinity" | "-Infinity" | "NaN"
    modes: number | "Infinity" | "-Infinity" | "NaN"
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.toggleExtensionPlugin
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/plugins/${id}`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
PUT /api/ai/extensions/plugins/{id}
curl --request PUT "${CADCAMFUN_URL}/api/ai/extensions/plugins/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
得る /api/ai/extensions/plugins # ai.extensionPlugins

必要 Authorization: Bearer <token>.

応答
200 物体 application/json
{
  plugins: Array<{
    id: string
    name: string
    version: string
    enabled: boolean
    tools: number | "Infinity" | "-Infinity" | "NaN"
    mods: number | "Infinity" | "-Infinity" | "NaN"
    modes: number | "Infinity" | "-Infinity" | "NaN"
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.extensionPlugins
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/plugins`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/extensions/plugins を取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/extensions/plugins" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
役職 /api/ai/extensions/plugins # ai.installExtensionPlugin

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  manifest: string
  source: string
  files?: {
    [key: string]: string
  } | null
}
応答
200 物体 application/json
{
  plugins: Array<{
    id: string
    name: string
    version: string
    enabled: boolean
    tools: number | "Infinity" | "-Infinity" | "NaN"
    mods: number | "Infinity" | "-Infinity" | "NaN"
    modes: number | "Infinity" | "-Infinity" | "NaN"
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.installExtensionPlugin
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/plugins`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/ai/extensions/plugins
curl --request POST "${CADCAMFUN_URL}/api/ai/extensions/plugins" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
得る /api/ai/extensions/mods # ai.extensionMods

必要 Authorization: Bearer <token>.

応答
200 物体 application/json
{
  mods: Array<{
    id: string
    name: string
    description: string
    enabled: boolean
    origin: "assistant" | "user" | "plugin"
    pluginId?: string | null
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.extensionMods
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/mods`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/extensions/mods を取得します
curl --request GET "${CADCAMFUN_URL}/api/ai/extensions/mods" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
置く /api/ai/extensions/mods/{id} # ai.toggleExtensionMod

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
iD パス 弦 必須
リクエスト本文 · 必須 · application/json
{
  enabled: boolean
}
応答
200 物体 application/json
{
  mods: Array<{
    id: string
    name: string
    description: string
    enabled: boolean
    origin: "assistant" | "user" | "plugin"
    pluginId?: string | null
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.toggleExtensionMod
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/mods/${id}`, {
  method: "PUT",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
PUT /api/ai/extensions/mods/{id}
curl --request PUT "${CADCAMFUN_URL}/api/ai/extensions/mods/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
消去 /api/ai/extensions/mods/{id} # ai.removeExtensionMod

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
iD パス 弦 必須
応答
200 物体 application/json
{
  mods: Array<{
    id: string
    name: string
    description: string
    enabled: boolean
    origin: "assistant" | "user" | "plugin"
    pluginId?: string | null
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.removeExtensionMod
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/extensions/mods/${id}`, {
  method: "DELETE",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/extensions/mods/{id} を削除します
curl --request DELETE "${CADCAMFUN_URL}/api/ai/extensions/mods/<id>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/modes

得る /api/ai/modes # ai.modes

必要 Authorization: Bearer <token>.

応答
200 物体 application/json
{
  modes: Array<{
    id: string
    title: string
    description: string
    pluginId: string
    pluginName: string
  }>
  builtin?: Array<{
    id: string
    title: string
    description: string
    pluginId: string
    pluginName: string
  }> | null
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.modes
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/modes`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
/api/ai/modes を取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/modes" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/skills

得る /api/ai/skills # ai.skills

必要 Authorization: Bearer <token>.

応答
200 物体 application/json
{
  skills: Array<{
    name: string
    description: string
    builtIn: boolean
    category: string
  }>
  max: number | "Infinity" | "-Infinity" | "NaN"
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
/api/ai/スキルを取得する
{
  "skills": [
    {
      "name": "cad-3d-modeling",
      "description": "Model 3D and 2D geometry in the open editor (45 element types): conventions, recipes for common parts, how to build complex objects.",
      "builtIn": true,
      "category": "cad"
    },
    {
      "name": "cam-operation-workflow",
      "description": "The loop from a drawing to verified G-code: describe, parameters, operation, generate, analyse, verify, fix.",
      "builtIn": true,
      "category": "cam"
    },
    {
      "name": "toolpath-verification",
      "description": "How to read and report a cam_edit action verify result: every finding code, its cause and its fix, and what was not modelled.",
      "builtIn": true,
      "category": "cam"
    },
    {
      "name": "cutting-parameters",
      "description": "Speeds, feeds, stepdown and stepover starting points by material, and the formulas behind them.",
      "builtIn": true,
      "category": "cam"
    },
    {
      "name": "drilling-and-holes",
      "description": "Drilling operations: cycles, peck rules, through-hole depth, large holes.",
      "builtIn": true,
      "category": "cam"
    },
    {
      "name": "precision-and-tolerances",
      "description": "Working to microns: nominal sizes, tolerance on round shapes, ISO 286 grades, finishing strategy and what the verification can and cannot show.",
      "builtIn": true,
      "category": "cam"
    },
    {
      "name": "industrial-standards",
      "description": "Mechanical and industrial rules for professional parts: ISO 2768 general tolerances, ISO 286 fits, surface finish, ISO 273 / ISO 4762 fastener holes, tap drills, DIN 6885 keys, ISO 54 gears, preferred numbers, design rules per process (milling, turning, sheet metal, casting, printing) and material densities.",
      "builtIn": true,
      "category": "cad"
    },
    {
      "name": "machines-and-axes",
      "description": "Mill, lathe and 3D printer: what turns, the sense of every axis, zeros and work offsets, touch probes and tool setters, and how to check a program against its machine.",
      "builtIn": true,
      "category": "cam"
    },
    {
      "name": "drawings-and-images",
      "description": "From a DXF/SVG file, an image of a dimensioned drawing, a photo or a sketch to a 3D model: which tool, what to ask, how to check the result.",
      "builtIn": true,
      "category": "cad"
    },
    {
      "name": "plugin-authoring",
      "description": "Write an extension for the ap
…
SDKの例
ai.skills
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.ai.skills()
curl
/api/ai/スキルを取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/skills" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
置く /api/ai/skills # ai.saveSkill

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  markdown?: string | null
  name?: string | null
  description?: string | null
  body?: string | null
}
応答
200 物体 application/json
{
  skill: {
    name: string
    description: string
    builtIn: boolean
    category: string
  }
  skills: Array<{
    name: string
    description: string
    builtIn: boolean
    category: string
  }>
  live: boolean
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.saveSkill
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiSaveSkillInput
const result = await client.ai.saveSkill({
  markdown: "",
  name: "",
  description: "",
  body: ""
})
curl
PUT /api/ai/スキル
curl --request PUT "${CADCAMFUN_URL}/api/ai/skills" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
消去 /api/ai/skills/{name} # ai.deleteSkill

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
名前 パス 弦 必須
応答
200 物体 application/json
{
  skills: Array<{
    name: string
    description: string
    builtIn: boolean
    category: string
  }>
  max: number | "Infinity" | "-Infinity" | "NaN"
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.deleteSkill
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiDeleteSkillInput
const result = await client.ai.deleteSkill({
  name: "<name>"
})
curl
/api/ai/skills/{name} を削除してください
curl --request DELETE "${CADCAMFUN_URL}/api/ai/skills/<name>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/credentials

置く /api/ai/credentials # ai.setCredentials

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  provider?: string | null
  key?: string | null
  baseUrl?: string | null
}
応答
200 物体 application/json
{
  providers: {
    [key: string]: "configured" | "missing"
  }
  configured: boolean
  tools?: Array<{
    id: string
    description: string
  }> | null
  host: "nikcli" | "direct"
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.setCredentials
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiSetCredentialsInput
const result = await client.ai.setCredentials({
  provider: "",
  key: "",
  baseUrl: ""
})
curl
PUT /api/ai/credentials
curl --request PUT "${CADCAMFUN_URL}/api/ai/credentials" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
消去 /api/ai/credentials/{provider} # ai.clearCredentials

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
プロバイダー パス 弦 必須
応答
200 物体 application/json
{
  providers: {
    [key: string]: "configured" | "missing"
  }
  configured: boolean
  tools?: Array<{
    id: string
    description: string
  }> | null
  host: "nikcli" | "direct"
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.clearCredentials
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiClearCredentialsInput
const result = await client.ai.clearCredentials({
  provider: "<provider>"
})
curl
/api/ai/credentials/{provider} を削除します
curl --request DELETE "${CADCAMFUN_URL}/api/ai/credentials/<provider>" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/status

得る /api/ai/status # ai.status

必要 Authorization: Bearer <token>.

応答
200 物体 application/json
{
  providers: {
    [key: string]: "configured" | "missing"
  }
  configured: boolean
  tools?: Array<{
    id: string
    description: string
  }> | null
  host: "nikcli" | "direct"
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
/api/ai/ステータスを取得する
{
  "providers": {
    "anthropic": "missing",
    "openai": "missing",
    "minimax": "missing",
    "gateway": "missing"
  },
  "configured": false,
  "host": "direct"
}
SDKの例
ai.status
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.ai.status()
curl
/api/ai/ステータスを取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/status" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/models

得る /api/ai/models # ai.models

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
configuredOnly クエリ "真実" | "間違い" | null オプション
応答
200 配列<オブジェクト> application/json
Array<{
  id: string
  provider: string
  tier?: "fast" | "balanced" | "best" | null
  contextWindow: number | "Infinity" | "-Infinity" | "NaN"
  tools: boolean
  vision: boolean
  configured: boolean
}>
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
/api/ai/models を取得する
[
  {
    "id": "claude-haiku-4-5",
    "provider": "anthropic",
    "tier": "fast",
    "contextWindow": 200000,
    "tools": true,
    "vision": true,
    "configured": false
  },
  {
    "id": "claude-sonnet-5-5",
    "provider": "anthropic",
    "tier": "balanced",
    "contextWindow": 1000000,
    "tools": true,
    "vision": true,
    "configured": false
  },
  {
    "id": "claude-opus-5-5",
    "provider": "anthropic",
    "tier": "best",
    "contextWindow": 1000000,
    "tools": true,
    "vision": true,
    "configured": false
  },
  {
    "id": "gpt-5-mini",
    "provider": "openai",
    "tier": "fast",
    "contextWindow": 400000,
    "tools": true,
    "vision": true,
    "configured": false
  },
  {
    "id": "gpt-5",
    "provider": "openai",
    "tier": "balanced",
    "contextWindow": 400000,
    "tools": true,
    "vision": true,
    "configured": false
  },
  {
    "id": "MiniMax-M2",
    "provider": "minimax",
    "tier": "fast",
    "contextWindow": 200000,
    "tools": true,
    "vision": false,
    "configured": false
  },
  {
    "id": "anthropic/claude-haiku-4-5",
    "provider": "gateway",
    "tier": "fast",
    "contextWindow": 200000,
    "tools": true,
    "vision": true,
    "configured": false
  },
  {
    "id": "anthropic/claude-sonnet-5-5",
    "provider": "gateway",
    "tier": "balanced",
    "contextWindow": 1000000,
    "tools": true,
    "vision": true,
    "configured": false
  },
  {
    "id": "anthropic/claude-opus-5-5",
    "provider": "gateway",
    "tier": "best",
    "contextWindow": 1000000,
    "tools": true,
    "vision": true,
    "configured": false
  }
]
SDKの例
ai.models
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiModelsInput
const result = await client.ai.models({})
curl
/api/ai/models を取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/models" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください
役職 /api/ai/models/refresh # ai.refreshModels

必要 Authorization: Bearer <token>.

応答
200 配列<オブジェクト> application/json
Array<{
  id: string
  name: string
  source: string
  auth: string[]
  configured: boolean
  baseUrl?: string | null
  defaultModel?: string | null
  models: Array<{
    id: string
    name: string
    provider: string
    contextWindow: number | "Infinity" | "-Infinity" | "NaN"
    maxOutput: number | "Infinity" | "-Infinity" | "NaN"
    inputWindow?: number | "Infinity" | "-Infinity" | "NaN" | null
    reasoning?: boolean | null
    variants?: string[] | null
    tools: boolean
    vision: boolean
    cost: {
      input: number | "Infinity" | "-Infinity" | "NaN"
      output: number | "Infinity" | "-Infinity" | "NaN"
    }
  }>
}>
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.refreshModels
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/models/refresh`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/ai/models/refresh
curl --request POST "${CADCAMFUN_URL}/api/ai/models/refresh" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/providers

得る /api/ai/providers # ai.providers

必要 Authorization: Bearer <token>.

応答
200 配列<オブジェクト> application/json
Array<{
  id: string
  name: string
  source: string
  auth: string[]
  configured: boolean
  baseUrl?: string | null
  defaultModel?: string | null
  models: Array<{
    id: string
    name: string
    provider: string
    contextWindow: number | "Infinity" | "-Infinity" | "NaN"
    maxOutput: number | "Infinity" | "-Infinity" | "NaN"
    inputWindow?: number | "Infinity" | "-Infinity" | "NaN" | null
    reasoning?: boolean | null
    variants?: string[] | null
    tools: boolean
    vision: boolean
    cost: {
      input: number | "Infinity" | "-Infinity" | "NaN"
      output: number | "Infinity" | "-Infinity" | "NaN"
    }
  }>
}>
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
/api/ai/providers を取得する
[
  {
    "id": "anthropic",
    "name": "anthropic",
    "source": "config",
    "auth": [
      "api"
    ],
    "configured": false,
    "models": [
      {
        "id": "claude-haiku-4-5",
        "name": "claude-haiku-4-5",
        "provider": "anthropic",
        "contextWindow": 200000,
        "maxOutput": 16000,
        "reasoning": false,
        "variants": [],
        "tools": true,
        "vision": true,
        "cost": {
          "input": 0,
          "output": 0
        }
      },
      {
        "id": "claude-sonnet-5-5",
        "name": "claude-sonnet-5-5",
        "provider": "anthropic",
        "contextWindow": 1000000,
        "maxOutput": 16000,
        "reasoning": false,
        "variants": [],
        "tools": true,
        "vision": true,
        "cost": {
          "input": 0,
          "output": 0
        }
      },
      {
        "id": "claude-opus-5-5",
        "name": "claude-opus-5-5",
        "provider": "anthropic",
        "contextWindow": 1000000,
        "maxOutput": 16000,
        "reasoning": false,
        "variants": [],
        "tools": true,
        "vision": true,
        "cost": {
          "input": 0,
          "output": 0
        }
      }
    ]
  },
  {
    "id": "openai",
    "name": "openai",
    "source": "config",
    "auth": [
      "api"
    ],
    "configured": false,
    "models": [
      {
        "id": "gpt-5-mini",
        "name": "gpt-5-mini",
        "provider": "openai",
        "contextWindow": 400000,
        "maxOutput": 16000,
        "reasoning": false,
        "variants": [],
        "tools": true,
        "vision": true,
        "cost": {
          "input": 0,
          "output": 0
        }
      },
      {
        "id": "gpt-5",
        "name": "gpt-5",
        "provider": "openai",
        "contextWindow": 400000,
        "maxOutput": 16000,
        "reasoning": false,
        "variants": [],
        "tools": true,
        "vision": true,
        "cost": {
          "input": 0,
          "output": 0
        }
      }
    ]
  },
  {
    "id": "minimax",
    "name": "minimax",
    "source": "config",
    "auth": [
      "api"
    ],
    "configured": false,
    "models": [
      {
        "id": "MiniMax-M2",
        "name": "MiniMax-M2",
        "provider": "minimax",
        "contextWindow": 200000,
        "maxOutput": 16000,
        "reasoning": false,
        "variants": [],
        "tools": true,
        "vision": false,
        "cost": {
          "input": 0,
          "output"
…
SDKの例
ai.providers
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.ai.providers()
curl
/api/ai/providers を取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/providers" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/prompts

得る /api/ai/prompts # ai.prompts

必要 Authorization: Bearer <token>.

パラメータ
名前でタイプ必須
モード クエリ 弦 | null オプション
応答
200 物体 application/json
{
  prompts: string[]
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
応答例 捕獲 · 200
/api/ai/prompts を取得する
{
  "prompts": [
    "How do I get started with CAD/CAM?",
    "What's the difference between CAD and CAM?",
    "Can you recommend resources for learning more?"
  ]
}
SDKの例
ai.prompts
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiPromptsInput
const result = await client.ai.prompts({})
curl
/api/ai/prompts を取得する
curl --request GET "${CADCAMFUN_URL}/api/ai/prompts" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
試してみてください

/api/ai/title

役職 /api/ai/title # ai.title

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  excerpt?: string | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 物体 application/json
{
  title: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.title
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiTitleInput
const result = await client.ai.title({
  excerpt: "",
  model: {}
})
curl
POST /api/ai/title
curl --request POST "${CADCAMFUN_URL}/api/ai/title" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/design-analysis

役職 /api/ai/design-analysis # ai.designAnalysis

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  description?: string | null
  layer?: string | null
  machine?: string | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 物体 application/json
{
  suggestions: Array<{
    title: string
    description: string
    confidence: number | "Infinity" | "-Infinity" | "NaN"
    priority: "low" | "medium" | "high"
    kind: "optimization" | "warning" | "critical"
  }>
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.designAnalysis
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiDesignAnalysisInput
const result = await client.ai.designAnalysis({
  description: "",
  layer: "",
  machine: "",
  model: {}
})
curl
POST /api/ai/デザイン分析
curl --request POST "${CADCAMFUN_URL}/api/ai/design-analysis" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/machining-parameters

役職 /api/ai/machining-parameters # ai.machiningParameters

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  material?: string | null
  tool?: string | null
  operation?: string | null
  machine?: string | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 物体 application/json
{
  cuttingSpeedMPerMin: number | "Infinity" | "-Infinity" | "NaN"
  feedRateMmPerMin: number | "Infinity" | "-Infinity" | "NaN"
  depthOfCutMm: number | "Infinity" | "-Infinity" | "NaN"
  stepoverPct: number | "Infinity" | "-Infinity" | "NaN"
  coolant: "flood" | "mist" | "none"
  engagement: "conventional" | "climb"
  warnings: string[]
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.machiningParameters
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiMachiningParametersInput
const result = await client.ai.machiningParameters({
  material: "",
  tool: "",
  operation: "",
  machine: "",
  model: {}
})
curl
POST /api/ai/加工パラメータ
curl --request POST "${CADCAMFUN_URL}/api/ai/machining-parameters" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/gcode-optimization

役職 /api/ai/gcode-optimization # ai.gcodeOptimization

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  gcode?: string | null
  material?: string | null
  machineType?: string | null
  constraints?: string | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 物体 application/json
{
  gcode: string
  changes: Array<{
    line: number | "Infinity" | "-Infinity" | "NaN"
    before: string
    after: string
    reason: string
  }>
  estimatedSavings: {
    timePct: number | "Infinity" | "-Infinity" | "NaN"
    toolLifePct: number | "Infinity" | "-Infinity" | "NaN"
    qualityNote: string
  }
  notes: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.gcodeOptimization
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiGcodeOptimizationInput
const result = await client.ai.gcodeOptimization({
  gcode: "",
  material: "",
  machineType: "",
  constraints: "",
  model: {}
})
curl
POST /api/ai/gcode-optimization
curl --request POST "${CADCAMFUN_URL}/api/ai/gcode-optimization" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/design-suggestions

役職 /api/ai/design-suggestions # ai.designSuggestions

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  elements?: string | null
  currentOperation?: string | null
  currentTool?: string | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 配列<オブジェクト> application/json
Array<{
  title: string
  rationale: string
  nextStep: string
}>
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.designSuggestions
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiDesignSuggestionsInput
const result = await client.ai.designSuggestions({
  elements: "",
  currentOperation: "",
  currentTool: "",
  model: {}
})
curl
POST /api/ai/design-suggestions
curl --request POST "${CADCAMFUN_URL}/api/ai/design-suggestions" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/chat

役職 /api/ai/chat # ai.chat

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  messages?: unknown | null
  mcpServerId?: string | null
  mcpReference?: string | null
}
応答
200 物体 application/json
{
  reply: string
  hasMcpData: boolean
}
400 AiBadRequestEncoded application/json
AiBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 AiNotFoundEncoded application/json
AiNotFoundEncoded
500 AiFailureEncoded application/json
AiFailureEncoded
SDKの例
ai.chat
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiChatInput
const result = await client.ai.chat({
  messages: null,
  mcpServerId: "",
  mcpReference: ""
})
curl
POST /api/ai/チャット
curl --request POST "${CADCAMFUN_URL}/api/ai/chat" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
役職 /api/ai/chat/stream # ai.chatStream

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  permissionMode?: "auto" | "ask" | "approve" | null
  agent?: string | null
  mode?: string | null
  attachments?: Array<{
    name: string
    mime?: string | null
    data: string
    encoding?: "base64" | "text" | null
  }> | null
  message?: string | null
  sessionId?: string | null
  projectId?: string | null
  drawingId?: string | null
  context?: string | null
  includeContext?: boolean | null
  model?: {
    provider?: string | null
    model?: string | null
    tier?: "fast" | "balanced" | "best" | null
    variant?: string | null
  } | null
}
応答
200 物体 text/event-stream
{
  id: string | null
  event: string
  data: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.chatStream
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiChatStreamInput
const result = await client.ai.chatStream({
  permissionMode: "auto",
  agent: "",
  mode: "",
  attachments: [
    {
      name: "",
      data: ""
    }
  ],
  message: "",
  sessionId: "",
  projectId: "",
  drawingId: "",
  context: "",
  includeContext: false,
  model: {}
})
curl
POST /api/ai/チャット/ストリーム
curl --request POST "${CADCAMFUN_URL}/api/ai/chat/stream" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
役職 /api/ai/chat/queue # ai.chatQueue

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  sessionId: string
  message: string
  projectId?: string | null
  delivery?: "queue" | "steer" | null
}
応答
200 物体 application/json
{
  message: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.chatQueue
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiChatQueueInput
const result = await client.ai.chatQueue({
  sessionId: "",
  message: "",
  projectId: "",
  delivery: "queue"
})
curl
POST /api/ai/chat/queue
curl --request POST "${CADCAMFUN_URL}/api/ai/chat/queue" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
役職 /api/ai/chat/abort # ai.chatAbort

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  sessionId?: string | null
  projectId?: string | null
}
応答
200 物体 application/json
{
  message: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.chatAbort
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiChatAbortInput
const result = await client.ai.chatAbort({
  sessionId: "",
  projectId: ""
})
curl
POST /api/ai/チャット/中止
curl --request POST "${CADCAMFUN_URL}/api/ai/chat/abort" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/permission

役職 /api/ai/permission/reply # ai.permissionReply

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  sessionId: string
  projectId?: string | null
  requestId: string
  decision: "once" | "always" | "reject"
}
応答
200 物体 application/json
{
  message: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.permissionReply
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiPermissionReplyInput
const result = await client.ai.permissionReply({
  sessionId: "",
  projectId: "",
  requestId: "",
  decision: "once"
})
curl
POST /api/ai/permission/reply
curl --request POST "${CADCAMFUN_URL}/api/ai/permission/reply" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/completion

役職 /api/ai/completion # ai.completion

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  prompt?: string | null
  systemPrompt?: string | null
  model?: string | null
  temperature?: number | "Infinity" | "-Infinity" | "NaN" | null
}
応答
200 物体 application/json
{
  text: string
  model: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.completion
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiCompletionInput
const result = await client.ai.completion({
  prompt: "",
  systemPrompt: "",
  model: "",
  temperature: 0
})
curl
POST /api/ai/completion
curl --request POST "${CADCAMFUN_URL}/api/ai/completion" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/analyze-gcode

役職 /api/ai/analyze-gcode # ai.analyzeGcode

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  gcode?: string | null
  model?: string | null
}
応答
200 物体 application/json
{
  issues: Array<{
    severity: "error" | "warning" | "info"
    code: string
    line: number | "Infinity" | "-Infinity" | "NaN"
    message: string
  }>
  stats: {
    lines: number | "Infinity" | "-Infinity" | "NaN"
    rapidMoves: number | "Infinity" | "-Infinity" | "NaN"
    cutMoves: number | "Infinity" | "-Infinity" | "NaN"
    toolChanges: number | "Infinity" | "-Infinity" | "NaN"
    bounds: {
      min: {
        x: number | "Infinity" | "-Infinity" | "NaN"
        y: number | "NaN"
        z: number | "NaN"
      }
      max: {
        x: number | "NaN"
      }
    } | null
  }
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.analyzeGcode
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiAnalyzeGcodeInput
const result = await client.ai.analyzeGcode({
  gcode: "",
  model: ""
})
curl
POST /api/ai/analyze-gcode
curl --request POST "${CADCAMFUN_URL}/api/ai/analyze-gcode" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/gcode

役職 /api/ai/gcode # ai.gcode

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  action?: string | null
  gcode?: string | null
  partialCode?: string | null
  machineType?: string | null
  material?: string | null
  model?: string | null
  options?: unknown | null
  description?: string | null
  toolpathType?: string | null
}
応答
200 物体 application/json
{
  success: true
  action: string
  data: unknown
  processedAt: string
}
400 GcodeActionErrorEncoded application/json
GcodeActionErrorEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 GcodeActionFailureEncoded application/json
GcodeActionFailureEncoded
SDKの例
ai.gcode
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiGcodeInput
const result = await client.ai.gcode({
  action: "",
  gcode: "",
  partialCode: "",
  machineType: "",
  material: "",
  model: "",
  options: null,
  description: "",
  toolpathType: ""
})
curl
POST /api/ai/gcode
curl --request POST "${CADCAMFUN_URL}/api/ai/gcode" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/toolpath-analysis

役職 /api/ai/toolpath-analysis # ai.toolpathAnalysis

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  gcode?: string | null
  model?: string | null
  max_tokens?: number | "Infinity" | "-Infinity" | "NaN" | null
}
応答
200 物体 application/json
{
  insights: string
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.toolpathAnalysis
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiToolpathAnalysisInput
const result = await client.ai.toolpathAnalysis({
  gcode: "",
  model: "",
  max_tokens: 0
})
curl
POST /api/ai/ツールパス分析
curl --request POST "${CADCAMFUN_URL}/api/ai/toolpath-analysis" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/feedback

役職 /api/ai/feedback # ai.feedback

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  messageId?: string | null
  rating?: string | null
  comment?: string | null
}
応答
200 物体 application/json
{
  success: true
  message: string
}
400 AiBadRequestEncoded application/json
AiBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AiFailureEncoded application/json
AiFailureEncoded
SDKの例
ai.feedback
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiFeedbackInput
const result = await client.ai.feedback({
  messageId: "",
  rating: "",
  comment: ""
})
curl
POST /api/ai/フィードバック
curl --request POST "${CADCAMFUN_URL}/api/ai/feedback" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/proxy

役職 /api/ai/proxy # ai.proxy

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  model?: string | null
  messages?: unknown | null
  max_tokens?: number | "Infinity" | "-Infinity" | "NaN" | null
  temperature?: number | "Infinity" | "-Infinity" | "NaN" | null
  system?: unknown | null
  reasoning?: unknown | null
}
応答
200 物体 application/json
{
  id: string
  type: "message"
  role: "assistant"
  model: string
  content: Array<{
    type: "text"
    text: string
  }>
  stop_reason: string | null
  usage: {
    input_tokens: number | "Infinity" | "-Infinity" | "NaN"
    output_tokens: number | "Infinity" | "-Infinity" | "NaN"
  }
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
SDKの例
ai.proxy
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AiProxyInput
const result = await client.ai.proxy({
  model: "",
  messages: null,
  max_tokens: 0,
  temperature: 0,
  system: null,
  reasoning: null
})
curl
POST /api/ai/プロキシ
curl --request POST "${CADCAMFUN_URL}/api/ai/proxy" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

/api/ai/oauth

役職 /api/ai/oauth/authorize # ai.oauthAuthorize

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  provider: "openai" | "xai"
}
応答
200 物体 application/json
{
  attemptId: string
  url: string
  instructions: string
  method: "auto" | "code" | "auto-code"
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.oauthAuthorize
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/oauth/authorize`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/ai/oauth/authorize
curl --request POST "${CADCAMFUN_URL}/api/ai/oauth/authorize" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください
役職 /api/ai/oauth/complete # ai.oauthComplete

必要 Authorization: Bearer <token>.

リクエスト本文 · 必須 · application/json
{
  provider: "openai" | "xai"
  attemptId: string
  code?: string | null
}
応答
200 物体 application/json
{
  providers: {
    [key: string]: "configured" | "missing"
  }
  configured: boolean
  tools?: Array<{
    id: string
    description: string
  }> | null
  host: "nikcli" | "direct"
}
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
例を取得する
ai.oauthComplete
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/ai/oauth/complete`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/ai/oauth/complete
curl --request POST "${CADCAMFUN_URL}/api/ai/oauth/complete" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
試してみてください

スキーマ

このグループのパラメータ、本体、および応答から到達可能な名前付きスキーマ。あ ? オプションのフィールドをマークします。 | null null 値が存在する可能性があるフィールドにマークを付けます。

AiBadRequestEncoded
{
  _tag: "AiBadRequest"
  error: string
}
AiFailureEncoded
{
  _tag: "AiFailure"
  error: string
}
AiNotFoundEncoded
{
  _tag: "AiNotFound"
  error: string
}
BadRequestEncoded
{
  _tag: "BadRequest"
  message: string
}
ConflictEncoded
{
  _tag: "Conflict"
  message: string
}
GcodeActionErrorEncoded
{
  _tag: "GcodeActionError"
  success: false
  error: string
  action?: string | null
  processedAt?: string | null
}
GcodeActionFailureEncoded
{
  _tag: "GcodeActionFailure"
  success: false
  error: string
  action: string
  processedAt: string
}
InternalErrorEncoded
{
  _tag: "InternalError"
  message: string
}
UnauthorizedEncoded
{
  _tag: "Unauthorized"
  message: string
}

このグループに電話をかける

オペレーション ID の形式は次のとおりです。 ai.<name>。生成された Promise SDK (@cadcamfun/api/sdk) それらのほとんどを次のように公開します client.<namespace>.<method>(input)、 どこ input パスパラメータとボディフィールドの 1 つのフラットオブジェクトです。各カードの SDK の例は、正確なアクセサーと入力タイプを示しています。マルチパート アップロード、バイナリまたは JavaScript 応答、生の Webhook は生成されません。それらのカードが示しているのは fetch 代わりに。

Promise SDK からのエラー
import { CadCam, ClientError } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

try {
  await client.projects.list()
} catch (error) {
  if (error instanceof ClientError) {
    // Transport | UnexpectedStatus | UnsupportedContentType | MalformedResponse | SseEventTooLarge
  } else {
    // a declared error body: switch on error._tag
  }
}

トラブルシューティング

症状考えられる原因修理
呼び出しごとの 401以前の起動からのトークン、または欠落しています Bearer 接頭辞送信 Authorization: Bearer <token> サイドカーが開始されたトークンを使用します。
何も起きる前の 400本体またはパラメータがスキーマと一致しませんペイロードとカード上のリクエスト スキーマを比較します。
別の場所で見えるレコードの 403 または 404代理アカウントは異なります権利を送信します x-session-token、またはレコードを所有するローカル プロファイルを使用します。
409重複した名前や古いブランチヘッドなどの矛盾した状態リソースを再読み込みし、現在のデータで再試行します。
「CORS によってブロックされました」と表示されてみてくださいドキュメントは非ループバックオリジンから提供されますドキュメントをローカルで実行するか、リクエストをcurlとしてコピーします。
接続拒否サイドカーが新しいポートで再起動されました新しいポートからポートを読み取ります ready 行。