> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getsupervisor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear agente a partir de una plantilla (fork de agent_version)

> Clona la configuración publicada de una plantilla del catálogo y crea un nuevo agente
inactivo en el workspace activo. Se replica el blueprint, stages, triggers e instrucciones
del `agent_version` origen dentro de una nueva versión en borrador.




## OpenAPI

````yaml /openapi/public-api.yaml post /v1/agents/from-template
openapi: 3.1.0
info:
  title: Agents Studio API
  version: 1.0.0
  description: >
    API del backend de Agents Studio. Expone servicios multi-tenant para
    gestionar agentes

    (texto y voz), catálogo de herramientas, habilitación de workspaces y
    operaciones de

    telefonía. Todos los endpoints requieren autenticación Bearer y respetan los
    contratos

    documentados en `docs/modules`.
  license:
    name: Proprietary
    url: https://getsupervisor.ai/legal/terms
servers:
  - url: https://api-prod.studio.getsupervisor.ai
    description: Producción
  - url: https://sandbox.agents.studio.getsupervisor.ai
    description: Sandbox
security:
  - BearerAuth: []
tags:
  - name: Agents
    description: >
      Gestión general de agentes y sus metadatos.

      Scopes requeridos: `agents:read` para consultas y `agents:write` para
      creación, actualización y operaciones sobre teléfonos.
  - name: Agent Versions
    description: Versionado y mantenimiento de versiones publicadas de los agentes.
  - name: Agent Schedules
    description: >-
      Configuración de horarios regulares y excepciones puntuales para controlar
      la disponibilidad de los agentes.
  - name: Agent Knowledge
    description: Uploads y sincronización de knowledge bases asociadas al agente.
  - name: Agent Tags
    description: Gestión de etiquetas asociadas a agentes.
  - name: Campaigns
    description: >
      Gestión de campañas masivas basadas en CSV para ejecutar agentes de forma
      batch.

      Scopes requeridos: `campaigns:read` para consultas y `campaigns:write`
      para creación.
  - name: Calls
    description: |
      Consultas de llamadas (Speech Analytics) disponibles para el workspace.
      Scopes requeridos: `calls:read`.
  - name: Knowledge
    description: Gestión de recursos de conocimiento asociados a tools.
  - name: Agent Instructions
    description: >
      Operaciones sobre instrucciones (prompt) gestionadas por los usuarios
      finales para

      guiar y corregir el comportamiento del agente. Las instrucciones se
      aplican a la

      versión activa del agente, se mantienen como texto libre sin formato (1 a
      500

      caracteres) y su prioridad se controla mediante el campo `order`.

      Scopes requeridos: `agent-instructions:read` para consultas y
      `agent-instructions:write` para creación o edición.
  - name: Voices
    description: Catálogo consolidado de voces provenientes de proveedores externos.
  - name: Catalogs
    description: >
      Gestión centralizada de catálogos (idiomas, tonos, voces, etiquetas) con
      alcance global o

      específico por workspace. Scopes requeridos: `catalogs:read` para
      consultas y

      `catalogs:write` para creación y modificaciones.
  - name: Agent Phones
    description: Conexión y desconexión de teléfonos asignados a agentes.
  - name: API Keys
    description: Gestión de credenciales de acceso programático y sus permisos.
  - name: Agent Blueprints
    description: >
      Gestión del blueprint (personalidad) asociado a cada versión de agente.

      Scopes requeridos: `agent-blueprints:read` para lectura y
      `agent-blueprints:write` para cambios en blueprint.
  - name: Agent Stages
    description: >
      Autoría de stages del blueprint del agente, abarcando orden, prompts y
      validaciones previas a la publicación.

      Scopes requeridos: `stages:read` para consultas y `stages:write` para
      creación y edición. La validación se ejecuta automáticamente en cada
      mutación y la sincronización con proveedores sucede mediante jobs internos
      tras los cambios.
  - name: Stage Triggers
    description: >
      Gestión detallada de triggers que conectan stages dentro del blueprint y
      definen las transiciones conversacionales.

      Scopes requeridos: `stage-triggers:*` (o políticas equivalentes bajo
      `stages:*`).
  - name: Workspaces
    description: Gestión multi-tenant y habilitación de credenciales por workspace.
  - name: Tools
    description: >
      Catálogo y ejecución de tools disponibles para los agentes.

      Scopes requeridos: `tools:read` para listar y `tools:execute` para
      ejecutar tools.
  - name: Webhooks
    description: >
      Gestión de webhooks por workspace para suscribirse a eventos del dominio y
      recibir notificaciones HTTP.

      Scopes requeridos: `webhooks:read` para consultas y `webhooks:write` para
      crear, actualizar o eliminar webhooks y suscripciones.
paths:
  /v1/agents/from-template:
    post:
      tags:
        - Agents
      summary: Crear agente a partir de una plantilla (fork de agent_version)
      description: >
        Clona la configuración publicada de una plantilla del catálogo y crea un
        nuevo agente

        inactivo en el workspace activo. Se replica el blueprint, stages,
        triggers e instrucciones

        del `agent_version` origen dentro de una nueva versión en borrador.
      operationId: forkAgentFromTemplate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForkAgentFromTemplateRequest'
            examples:
              basic:
                summary: Crear agente desde plantilla predeterminada
                value:
                  templateId: 0f92c4f0-62f7-4337-82c2-7d9b19c5b6a2
                  name: Campaña de cobranza
                  status: inactive
                  debounceDelayMs: 500
      responses:
        '201':
          description: Agente creado a partir de plantilla
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentDetail'
              examples:
                created:
                  summary: Nuevo agente inactivo generado desde plantilla
                  value:
                    agentId: 8e7a9b94-2d5f-4d26-a2d5-6ff5f08fc81f
                    workspaceId: a44bb95e-9f01-4d19-8b62-1f6f2b8e8363
                    name: Cobranza Outbound Baseline
                    agentType: voice
                    status: inactive
                    versionId: 4c01f8ad-9ae5-4b20-98af-9559a2899a21
                    knowledgeBaseIds: []
                    tools: []
                    createdAt: '2025-10-15T09:21:45.000Z'
                    updatedAt: '2025-10-15T09:21:45.000Z'
        '400':
          description: Petición inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: WORKSPACE_REQUIRED
                message: Workspace context is required to fork an agent from a template
        '404':
          description: Plantilla o versión de plantilla no encontrada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: TEMPLATE_NOT_FOUND
                message: No existe la plantilla solicitada
components:
  schemas:
    ForkAgentFromTemplateRequest:
      type: object
      description: >-
        Datos necesarios para clonar una plantilla del catálogo y crear un nuevo
        agente en el workspace activo. Permite sobrescribir metadatos básicos
        del agente generado.
      properties:
        templateId:
          type: string
          format: uuid
          description: Identificador de la plantilla a clonar.
        templateVersionId:
          type: string
          format: uuid
          description: >-
            Opcional. Si no se especifica, se usa el `agent_version_id`
            configurado como predeterminado en la tabla `catalog_templates`.
        name:
          type:
            - string
            - 'null'
          maxLength: 255
          description: Opcional. Nombre a asignar al nuevo agente.
        description:
          type:
            - string
            - 'null'
          maxLength: 1000
          description: Opcional. Descripción operativa del agente.
        status:
          type:
            - string
            - 'null'
          enum:
            - inactive
            - training
            - active
          description: Opcional. Estado inicial del agente generado.
        debounceDelayMs:
          type:
            - integer
            - 'null'
          minimum: 0
          description: Opcional. Delay antes de procesar eventos (milisegundos).
      required:
        - templateId
      additionalProperties: false
    AgentDetail:
      type: object
      properties:
        agentId:
          type: string
          format: uuid
        name:
          type: string
        agentType:
          type: string
          enum:
            - chat
            - voice
        workspaceId:
          type: string
          format: uuid
        versionId:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - inactive
            - training
            - active
            - archived
        description:
          type:
            - string
            - 'null'
        avatarUrl:
          type:
            - string
            - 'null'
          format: uri
          description: URL pública opcional utilizada para representar al agente.
        debounceDelayMs:
          type:
            - integer
            - 'null'
          minimum: 0
          description: Delay opcional antes de enviar respuestas (milisegundos).
        toneId:
          type:
            - string
            - 'null'
          format: uuid
        messageStyleId:
          type:
            - string
            - 'null'
          format: uuid
        ownerUserId:
          type:
            - string
            - 'null'
          format: uuid
        knowledgeBaseIds:
          type: array
          description: Identificadores de knowledge bases asociadas.
          items:
            type: string
            format: uuid
        tags:
          type: array
          description: >-
            Tags de negocio asignados al agente. Se administran mediante
            `/v1/agents/{agentId}/tags`.
          items:
            type: string
            format: uuid
        tools:
          type: array
          description: Tools habilitadas para el agente.
          items:
            type: object
            properties:
              identifier:
                type: string
              displayName:
                type: string
              enabled:
                type: boolean
            required:
              - identifier
              - displayName
              - enabled
        voiceConfig:
          type:
            - object
            - 'null'
          description: Configuración de voz activa cuando el agente es de tipo voice.
          properties:
            voiceId:
              type: string
            webhookUrl:
              type: string
              format: uri
            llmId:
              type:
                - string
                - 'null'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        totalCalls:
          type: integer
          minimum: 0
          description: Total de llamadas realizadas por el agente.
        totalOperationalDays:
          type: integer
          minimum: 0
          description: Total de días operativos desde la creación del agente.
        goalAchievedPercentage:
          type: number
          minimum: 0
          maximum: 100
          description: Porcentaje de llamadas donde el objetivo fue alcanzado.
        metadata:
          type: object
          additionalProperties: true
      required:
        - agentId
        - name
        - agentType
        - workspaceId
        - status
        - createdAt
        - updatedAt
        - totalCalls
        - totalOperationalDays
        - goalAchievedPercentage
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Código principal del error (alto nivel).
        message:
          type: string
          description: Mensaje legible para humanos.
        details:
          type: object
          description: >
            Información adicional específica del error.

            Cuando aplique, `details.subcode` provee un identificador estable
            para que el frontend decida qué UI mostrar.
          properties:
            subcode:
              type: string
              description: >-
                Identificador específico del error (p.ej.
                `WORKSPACE_NOT_PROVISIONED`).
            workspaceId:
              type: string
              format: uuid
              description: Identificador de workspace relacionado cuando aplica.
          additionalProperties: true
      required:
        - code
        - message
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````