Documentación
Sesiones y acciones de IA
Proveedores, credenciales, conversaciones, turnos de streaming, invocación de acciones, tokens puente, habilidades y recuperación de sesiones.
Traducido automáticamente del inglés. Ver el original en inglés
Envíe estas solicitudes a su propio sidecar en funcionamiento. Los valores permanecen en este navegador.
¿Cómo funciona esto?
El sidecar escucha en un puerto loopback elegido al inicio y lo imprime en su ready línea; use esa URL y el CADCAMFUN_TOKEN se empezó con. Las solicitudes van directamente desde esta página a esa dirección.
El sidecar envía encabezados CORS solo a los orígenes Tauri y a http://localhost o http://127.0.0.1 en cualquier puerto. Desde los documentos alojados, el navegador bloquea la respuesta, así que ejecute los documentos localmente (bun run dev en packages/web) para usar el área de juegos o copiar la solicitud como curl. Para experimentar sin tocar datos reales, inicie el sidecar con CADCAMFUN_DATA_DIR apuntado a un directorio desechable - ver el tutorial de la API.
Operaciones
52 endpoints en el ai grupo, generado a partir del propio sidecar Documento OpenAPI. Las operaciones protegidas toman Authorization: Bearer $CADCAMFUN_TOKEN; ver autenticación. El comportamiento y los límites están en la guía del subsistema.
| conseguir | /api/ai/actions | ai.actions |
| correo | /api/ai/actions/invoke | ai.invokeAction |
| correo | /api/ai/bridge/tokens | ai.issueBridgeToken |
| conseguir | /api/ai/bridge/tokens | ai.bridgeTokens |
| borrar | /api/ai/bridge/tokens/{id} | ai.revokeBridgeToken |
| conseguir | /api/ai/agents | ai.agents |
| correo | /api/ai/sessions/control | ai.sessionControl |
| correo | /api/ai/sessions/state | ai.sessionState |
| correo | /api/ai/sessions/remove | ai.removeSession |
| conseguir | /api/ai/extensions/mcp | ai.mcpServers |
| poner | /api/ai/extensions/mcp | ai.saveMcpServer |
| borrar | /api/ai/extensions/mcp/{name} | ai.deleteMcpServer |
| borrar | /api/ai/extensions/plugins/{id} | ai.removeExtensionPlugin |
| poner | /api/ai/extensions/plugins/{id} | ai.toggleExtensionPlugin |
| conseguir | /api/ai/extensions/plugins | ai.extensionPlugins |
| correo | /api/ai/extensions/plugins | ai.installExtensionPlugin |
| conseguir | /api/ai/extensions/mods | ai.extensionMods |
| poner | /api/ai/extensions/mods/{id} | ai.toggleExtensionMod |
| borrar | /api/ai/extensions/mods/{id} | ai.removeExtensionMod |
| conseguir | /api/ai/modes | ai.modes |
| conseguir | /api/ai/skills | ai.skills |
| poner | /api/ai/skills | ai.saveSkill |
| borrar | /api/ai/skills/{name} | ai.deleteSkill |
| poner | /api/ai/credentials | ai.setCredentials |
| borrar | /api/ai/credentials/{provider} | ai.clearCredentials |
| conseguir | /api/ai/status | ai.status |
| conseguir | /api/ai/models | ai.models |
| conseguir | /api/ai/providers | ai.providers |
| correo | /api/ai/models/refresh | ai.refreshModels |
| conseguir | /api/ai/prompts | ai.prompts |
| correo | /api/ai/title | ai.title |
| correo | /api/ai/design-analysis | ai.designAnalysis |
| correo | /api/ai/machining-parameters | ai.machiningParameters |
| correo | /api/ai/gcode-optimization | ai.gcodeOptimization |
| correo | /api/ai/design-suggestions | ai.designSuggestions |
| correo | /api/ai/chat | ai.chat |
| correo | /api/ai/chat/stream | ai.chatStream |
| correo | /api/ai/sessions/prompt | ai.sessionPrompt |
| conseguir | /api/ai/sessions/{sessionId}/stream | ai.sessionStream |
| conseguir | /api/ai/sessions | ai.sessionList |
| conseguir | /api/ai/sessions/{sessionId}/messages | ai.sessionMessages |
| correo | /api/ai/chat/queue | ai.chatQueue |
| correo | /api/ai/chat/abort | ai.chatAbort |
| correo | /api/ai/permission/reply | ai.permissionReply |
| correo | /api/ai/completion | ai.completion |
| correo | /api/ai/analyze-gcode | ai.analyzeGcode |
| correo | /api/ai/gcode | ai.gcode |
| correo | /api/ai/toolpath-analysis | ai.toolpathAnalysis |
| correo | /api/ai/feedback | ai.feedback |
| correo | /api/ai/proxy | ai.proxy |
| correo | /api/ai/oauth/authorize | ai.oauthAuthorize |
| correo | /api/ai/oauth/complete | ai.oauthComplete |
/api/ai/actions
ai.actions Requiere Authorization: Bearer <token>.
200 objeto 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
Ejemplo de respuesta capturado · 200
{
"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
… Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/actions" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.invokeAction Requiere Authorization: Bearer <token>.
{ projectId: string drawingId?: string | null callId?: string | null tool: string input: object }
200 objeto application/json
{ tool: string action: string result: unknown }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/actions/invoke" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/bridge
ai.issueBridgeToken Requiere Authorization: Bearer <token>.
{ name?: string | null projectId: string mode: "read" | "write" days?: number | "Infinity" | "-Infinity" | "NaN" | null }
200 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/bridge/tokens" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.bridgeTokens Requiere Authorization: Bearer <token>.
200 Matriz<objeto> 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
Ejemplo de respuesta capturado · 200
[] Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/bridge/tokens" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.revokeBridgeToken Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| identificación | camino | cadena | requerido |
200 objeto application/json
{ message: string }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request DELETE "${CADCAMFUN_URL}/api/ai/bridge/tokens/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/agents
ai.agents Requiere Authorization: Bearer <token>.
200 Matriz<objeto> 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
Ejemplo de respuesta capturado · 200
[
{
"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
}
] Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/agents" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/sessions
ai.sessionControl Requiere Authorization: Bearer <token>.
{ 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 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/control" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.sessionState Requiere Authorization: Bearer <token>.
{ sessionId: string projectId?: string | null }
200 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/state" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.removeSession Requiere Authorization: Bearer <token>.
{ sessionId: string projectId?: string | null }
200 objeto application/json
{ removed: boolean }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/remove" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.sessionPrompt Requiere Authorization: Bearer <token>.
{ 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 objeto 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
buscar ejemplo
// 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
curl --request POST "${CADCAMFUN_URL}/api/ai/sessions/prompt" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.sessionStream Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| sessionId | camino | cadena | requerido |
| después | consulta | cadena | null | opcional |
200 objeto 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
buscar ejemplo
// 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
curl --request GET "${CADCAMFUN_URL}/api/ai/sessions/<sessionId>/stream" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.sessionList Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| projectId | consulta | cadena | requerido |
| límite | consulta | cadena | null | opcional |
200 Matriz<objeto> 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
buscar ejemplo
// 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
curl --request GET "${CADCAMFUN_URL}/api/ai/sessions?projectId=<projectId>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.sessionMessages Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| sessionId | camino | cadena | requerido |
| antes | consulta | cadena | null | opcional |
| límite | consulta | cadena | null | opcional |
200 objeto 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
buscar ejemplo
// 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
curl --request GET "${CADCAMFUN_URL}/api/ai/sessions/<sessionId>/messages" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/extensions
ai.mcpServers Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| projectId | consulta | cadena | requerido |
200 objeto 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
buscar ejemplo
// 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
curl --request GET "${CADCAMFUN_URL}/api/ai/extensions/mcp?projectId=<projectId>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.saveMcpServer Requiere Authorization: Bearer <token>.
{ 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 objeto 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
buscar ejemplo
// 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
curl --request PUT "${CADCAMFUN_URL}/api/ai/extensions/mcp" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.deleteMcpServer Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| nombre | camino | cadena | requerido |
| projectId | consulta | cadena | requerido |
200 objeto 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
buscar ejemplo
// 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
curl --request DELETE "${CADCAMFUN_URL}/api/ai/extensions/mcp/<name>?projectId=<projectId>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.removeExtensionPlugin Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| identificación | camino | cadena | requerido |
200 objeto 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
buscar ejemplo
// 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
curl --request DELETE "${CADCAMFUN_URL}/api/ai/extensions/plugins/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.toggleExtensionPlugin Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| identificación | camino | cadena | requerido |
{ enabled: boolean }
200 objeto 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
buscar ejemplo
// 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
curl --request PUT "${CADCAMFUN_URL}/api/ai/extensions/plugins/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.extensionPlugins Requiere Authorization: Bearer <token>.
200 objeto 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
buscar ejemplo
// 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
curl --request GET "${CADCAMFUN_URL}/api/ai/extensions/plugins" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.installExtensionPlugin Requiere Authorization: Bearer <token>.
{ manifest: string source: string files?: { [key: string]: string } | null }
200 objeto 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
buscar ejemplo
// 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
curl --request POST "${CADCAMFUN_URL}/api/ai/extensions/plugins" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.extensionMods Requiere Authorization: Bearer <token>.
200 objeto 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
buscar ejemplo
// 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
curl --request GET "${CADCAMFUN_URL}/api/ai/extensions/mods" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.toggleExtensionMod Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| identificación | camino | cadena | requerido |
{ enabled: boolean }
200 objeto 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
buscar ejemplo
// 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
curl --request PUT "${CADCAMFUN_URL}/api/ai/extensions/mods/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.removeExtensionMod Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| identificación | camino | cadena | requerido |
200 objeto 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
buscar ejemplo
// 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
curl --request DELETE "${CADCAMFUN_URL}/api/ai/extensions/mods/<id>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/modes
ai.modes Requiere Authorization: Bearer <token>.
200 objeto 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
buscar ejemplo
// 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
curl --request GET "${CADCAMFUN_URL}/api/ai/modes" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/skills
ai.skills Requiere Authorization: Bearer <token>.
200 objeto 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
Ejemplo de respuesta capturado · 200
{
"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
… Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/skills" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.saveSkill Requiere Authorization: Bearer <token>.
{ markdown?: string | null name?: string | null description?: string | null body?: string | null }
200 objeto 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
Ejemplo de SDK
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
curl --request PUT "${CADCAMFUN_URL}/api/ai/skills" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.deleteSkill Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| nombre | camino | cadena | requerido |
200 objeto 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
Ejemplo de SDK
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
curl --request DELETE "${CADCAMFUN_URL}/api/ai/skills/<name>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/credentials
ai.setCredentials Requiere Authorization: Bearer <token>.
{ provider?: string | null key?: string | null baseUrl?: string | null }
200 objeto 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
Ejemplo de SDK
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
curl --request PUT "${CADCAMFUN_URL}/api/ai/credentials" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.clearCredentials Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| proveedor | camino | cadena | requerido |
200 objeto 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
Ejemplo de SDK
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
curl --request DELETE "${CADCAMFUN_URL}/api/ai/credentials/<provider>" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/status
ai.status Requiere Authorization: Bearer <token>.
200 objeto 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
Ejemplo de respuesta capturado · 200
{
"providers": {
"anthropic": "missing",
"openai": "missing",
"minimax": "missing",
"gateway": "missing"
},
"configured": false,
"host": "direct"
} Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/status" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/models
ai.models Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| configuredOnly | consulta | "verdadero" | "fALSO" | null | opcional |
200 Matriz<objeto> 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
Ejemplo de respuesta capturado · 200
[
{
"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
}
] Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/models" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
ai.refreshModels Requiere Authorization: Bearer <token>.
200 Matriz<objeto> 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
buscar ejemplo
// 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
curl --request POST "${CADCAMFUN_URL}/api/ai/models/refresh" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/providers
ai.providers Requiere Authorization: Bearer <token>.
200 Matriz<objeto> 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
Ejemplo de respuesta capturado · 200
[
{
"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"
… Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/providers" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/prompts
ai.prompts Requiere Authorization: Bearer <token>.
| Nombre | En | Tipo | Requerido |
|---|---|---|---|
| modo | consulta | cadena | null | opcional |
200 objeto application/json
{ prompts: string[] }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de respuesta capturado · 200
{
"prompts": [
"How do I get started with CAD/CAM?",
"What's the difference between CAD and CAM?",
"Can you recommend resources for learning more?"
]
} Ejemplo de SDK
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
curl --request GET "${CADCAMFUN_URL}/api/ai/prompts" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" Pruébalo
/api/ai/title
ai.title Requiere Authorization: Bearer <token>.
{ excerpt?: string | null model?: { provider?: string | null model?: string | null tier?: "fast" | "balanced" | "best" | null variant?: string | null } | null }
200 objeto application/json
{ title: string }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/title" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/design-analysis
ai.designAnalysis Requiere Authorization: Bearer <token>.
{ 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 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/design-analysis" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/machining-parameters
ai.machiningParameters Requiere Authorization: Bearer <token>.
{ 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 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/machining-parameters" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/gcode-optimization
ai.gcodeOptimization Requiere Authorization: Bearer <token>.
{ 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 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/gcode-optimization" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/design-suggestions
ai.designSuggestions Requiere Authorization: Bearer <token>.
{ 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 Matriz<objeto> application/json
Array<{ title: string rationale: string nextStep: string }>
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/design-suggestions" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/chat
ai.chat Requiere Authorization: Bearer <token>.
{ messages?: unknown | null mcpServerId?: string | null mcpReference?: string | null }
200 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/chat" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.chatStream Requiere Authorization: Bearer <token>.
{ 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 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/chat/stream" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.chatQueue Requiere Authorization: Bearer <token>.
{ sessionId: string message: string projectId?: string | null delivery?: "queue" | "steer" | null }
200 objeto application/json
{ message: string }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/chat/queue" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.chatAbort Requiere Authorization: Bearer <token>.
{ sessionId?: string | null projectId?: string | null }
200 objeto application/json
{ message: string }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/chat/abort" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/permission
ai.permissionReply Requiere Authorization: Bearer <token>.
{ sessionId: string projectId?: string | null requestId: string decision: "once" | "always" | "reject" }
200 objeto application/json
{ message: string }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/permission/reply" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/completion
ai.completion Requiere Authorization: Bearer <token>.
{ prompt?: string | null systemPrompt?: string | null model?: string | null temperature?: number | "Infinity" | "-Infinity" | "NaN" | null }
200 objeto application/json
{ text: string model: string }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/completion" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/analyze-gcode
ai.analyzeGcode Requiere Authorization: Bearer <token>.
{ gcode?: string | null model?: string | null }
200 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/analyze-gcode" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/gcode
ai.gcode Requiere Authorization: Bearer <token>.
{ 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 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/gcode" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/toolpath-analysis
ai.toolpathAnalysis Requiere Authorization: Bearer <token>.
{ gcode?: string | null model?: string | null max_tokens?: number | "Infinity" | "-Infinity" | "NaN" | null }
200 objeto application/json
{ insights: string }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/toolpath-analysis" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/feedback
ai.feedback Requiere Authorization: Bearer <token>.
{ messageId?: string | null rating?: string | null comment?: string | null }
200 objeto application/json
{ success: true message: string }
400 AiBadRequestEncoded application/json
AiBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AiFailureEncoded application/json
AiFailureEncoded
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/feedback" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/proxy
ai.proxy Requiere Authorization: Bearer <token>.
{ 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 objeto 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
Ejemplo de SDK
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
curl --request POST "${CADCAMFUN_URL}/api/ai/proxy" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
/api/ai/oauth
ai.oauthAuthorize Requiere Authorization: Bearer <token>.
{ provider: "openai" | "xai" }
200 objeto 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
buscar ejemplo
// 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
curl --request POST "${CADCAMFUN_URL}/api/ai/oauth/authorize" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
ai.oauthComplete Requiere Authorization: Bearer <token>.
{ provider: "openai" | "xai" attemptId: string code?: string | null }
200 objeto 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
buscar ejemplo
// 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
curl --request POST "${CADCAMFUN_URL}/api/ai/oauth/complete" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json Pruébalo
esquemas
Esquemas con nombre accesibles desde los parámetros, cuerpos y respuestas de este grupo. A ? marca un campo opcional; | null marca un campo que puede estar presente con un valor nulo.
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 }
Llamando a este grupo
Los identificadores de operación tienen la forma ai.<name>. El SDK de promesa generado (@cadcamfun/api/sdk) expone la mayoría de ellos como client.<namespace>.<method>(input), dónde input es un objeto plano de parámetros de ruta y campos de cuerpo; El ejemplo de SDK de cada tarjeta muestra el acceso exacto y el tipo de entrada. No se generan cargas de varias partes, respuestas binarias o JavaScript ni webhooks sin formato; esas tarjetas muestran fetch en su lugar.
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
}
} Solución de problemas
| Síntoma | causa probable | Arreglar |
|---|---|---|
| 401 en cada llamada | Token de un lanzamiento anterior o faltante Bearer prefijo | Enviar Authorization: Bearer <token> con la ficha con la que se inició el sidecar. |
| 400 antes de que ocurra algo | El cuerpo o el parámetro no coincide con el esquema | Compare la carga útil con el esquema de solicitud en la tarjeta. |
| 403 o 404 en un registro que puedes ver en otro sitio | La cuenta de actuación difiere. | enviar la derecha x-session-tokeno utilice el perfil local propietario del registro. |
| 409 | Estado conflictivo, como un nombre duplicado o un encabezado de sucursal obsoleto | Vuelva a leer el recurso y vuelva a intentarlo con los datos actuales. |
| Pruébelo, dice "bloqueado por CORS" | Los documentos se entregan desde un origen sin bucle invertido. | Ejecute los documentos localmente o copie la solicitud como curl. |
| Conexión rechazada | El sidecar se reinició en un nuevo puerto. | Leer el puerto del nuevo ready línea. |