# Get Node Type

> GET /api/v1/node-types/{name} — request parameters and responses from the Menace Voice API schema.

`GET /api/v1/node-types/{name}`

{/* Generated by scripts/sync_docs_api.mjs. Edit the API schema source to change the contract. */}

See [authentication](/api-reference/authentication) for workspace API access. Public embed and artifact endpoints use their documented session or access tokens.

## API contract for documentation tools

Generated from the OpenAPI schema. Do not infer a different parameter type from an example. Authentication headers are alternatives as explained in the authentication guide.

### Parameters

| Name | Location | Type | Required | Description and constraints |
| --- | --- | --- | --- | --- |
| name | path | string | yes |  |
| authorization | header | string or null | no |  |
| X-API-Key | header | string or null | no |  |

### Response 200

Successful Response

application/json: NodeSpec (object).

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| name | string | yes |  |
| display_name | string | yes |  |
| description | string | yes | Human-facing explanation shown in AddNodePanel. minLength: 1 |
| llm_hint | string or null | no | LLM-only guidance; omitted from the UI. |
| docs_url | string or null | no | Documentation URL shown in the node editor. |
| category | NodeCategory (string) | yes |  |
| icon | string | yes |  |
| version | string | no | default: "1.0.0" |
| properties | array of PropertySpec (object) | yes |  |
| examples | array of NodeExample (object) | no |  |
| graph_constraints | GraphConstraints (object) or null | no |  |

### Response 404

Not found

### Response 422

Validation Error

application/json: HTTPValidationError (object).

| Field | Type | Required | Description and constraints |
| --- | --- | --- | --- |
| detail | array of ValidationError (object) | no |  |

## OpenAPI

````yaml api-reference/openapi.json get /api/v1/node-types/{name}
openapi: 3.1.0
info:
  title: Menace Voice API
  description: API for Menace Voice agents
  version: 1.0.0
servers:
  - url: https://voice.menaceui.com
    description: Production
  - url: http://localhost:8000
    description: Local development
paths:
  /api/v1/node-types/{name}:
    get:
      tags:
        - main
      summary: Get Node Type
      operationId: get_node_type_api_v1_node_types__name__get
      parameters:
        - name: name
          in: path
          required: true
          schema:
            type: string
            title: Name
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            title: Authorization
        - name: X-API-Key
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            title: X-Api-Key
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NodeSpec"
        "404":
          description: Not found
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
      x-sdk-method: get_node_type
      x-sdk-description: Fetch a single node spec by name.
components:
  schemas:
    DisplayOptions:
      properties:
        show:
          anyOf:
            - additionalProperties:
                items: {}
                type: array
              type: object
            - type: "null"
          title: Show
        hide:
          anyOf:
            - additionalProperties:
                items: {}
                type: array
              type: object
            - type: "null"
          title: Hide
      additionalProperties: false
      type: object
      title: DisplayOptions
      description: |-
        Conditional visibility rules.

        `show` keys are AND-combined: this property is visible only when EVERY
        referenced field's value matches one of the listed values.

        `hide` keys are OR-combined: this property is hidden when ANY referenced
        field's value matches one of the listed values.

        Example:
            DisplayOptions(show={"extraction_enabled": [True]})
            DisplayOptions(show={"greeting_type": ["audio"]})
    GraphConstraints:
      properties:
        min_incoming:
          anyOf:
            - type: integer
            - type: "null"
          title: Min Incoming
        max_incoming:
          anyOf:
            - type: integer
            - type: "null"
          title: Max Incoming
        min_outgoing:
          anyOf:
            - type: integer
            - type: "null"
          title: Min Outgoing
        max_outgoing:
          anyOf:
            - type: integer
            - type: "null"
          title: Max Outgoing
        min_instances:
          anyOf:
            - type: integer
            - type: "null"
          title: Min Instances
        max_instances:
          anyOf:
            - type: integer
            - type: "null"
          title: Max Instances
      additionalProperties: false
      type: object
      title: GraphConstraints
      description: Per-node-type graph rules. WorkflowGraph enforces these at validation.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: "#/components/schemas/ValidationError"
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    NodeCategory:
      type: string
      enum:
        - call_node
        - global_node
        - trigger
        - integration
      title: NodeCategory
      description: Drives grouping in the AddNodePanel UI.
    NodeExample:
      properties:
        name:
          type: string
          title: Name
        description:
          anyOf:
            - type: string
            - type: "null"
          title: Description
        data:
          additionalProperties: true
          type: object
          title: Data
      additionalProperties: false
      type: object
      required:
        - name
        - data
      title: NodeExample
      description: A worked example LLMs can pattern-match. Keep small and realistic.
    NodeSpec:
      properties:
        name:
          type: string
          title: Name
        display_name:
          type: string
          title: Display Name
        description:
          type: string
          minLength: 1
          title: Description
          description: Human-facing explanation shown in AddNodePanel.
        llm_hint:
          anyOf:
            - type: string
            - type: "null"
          title: Llm Hint
          description: LLM-only guidance; omitted from the UI.
        docs_url:
          anyOf:
            - type: string
            - type: "null"
          title: Docs Url
          description: Documentation URL shown in the node editor.
        category:
          $ref: "#/components/schemas/NodeCategory"
        icon:
          type: string
          title: Icon
        version:
          type: string
          title: Version
          default: 1.0.0
        properties:
          items:
            $ref: "#/components/schemas/PropertySpec"
          type: array
          title: Properties
        examples:
          items:
            $ref: "#/components/schemas/NodeExample"
          type: array
          title: Examples
        graph_constraints:
          anyOf:
            - $ref: "#/components/schemas/GraphConstraints"
            - type: "null"
      additionalProperties: false
      type: object
      required:
        - name
        - display_name
        - description
        - category
        - icon
        - properties
      title: NodeSpec
      description: Single source of truth for a node type.
    NumberInputOptions:
      properties:
        fractional:
          type: boolean
          title: Fractional
          description: Allow arbitrary fractional values via step='any'.
          default: false
      additionalProperties: false
      type: object
      title: NumberInputOptions
      description: Renderer hints for numeric inputs.
    PropertyLayoutOptions:
      properties:
        column_span:
          anyOf:
            - type: integer
              maximum: 12
              minimum: 1
            - type: "null"
          title: Column Span
          description: Number of columns to occupy in the editor's 12-column grid.
      additionalProperties: false
      type: object
      title: PropertyLayoutOptions
      description: Renderer layout hints for a property in the node editor.
    PropertyOption:
      properties:
        value:
          anyOf:
            - type: string
            - type: integer
            - type: boolean
            - type: number
          title: Value
        label:
          type: string
          title: Label
        description:
          anyOf:
            - type: string
            - type: "null"
          title: Description
      additionalProperties: false
      type: object
      required:
        - value
        - label
      title: PropertyOption
      description: An option in an `options` or `multi_options` dropdown.
    PropertyRendererOptions:
      properties:
        layout:
          anyOf:
            - $ref: "#/components/schemas/PropertyLayoutOptions"
            - type: "null"
        number_input:
          anyOf:
            - $ref: "#/components/schemas/NumberInputOptions"
            - type: "null"
      additionalProperties: false
      type: object
      title: PropertyRendererOptions
      description: >-
        Typed renderer metadata for node properties.


        Add new renderer behavior here instead of using free-form property
        metadata.
    PropertySpec:
      properties:
        name:
          type: string
          title: Name
        type:
          $ref: "#/components/schemas/PropertyType"
        display_name:
          type: string
          title: Display Name
        description:
          type: string
          minLength: 1
          title: Description
          description: Human-facing explanation shown in the UI.
        llm_hint:
          anyOf:
            - type: string
            - type: "null"
          title: Llm Hint
          description: LLM-only guidance; omitted from the UI.
        default:
          title: Default
        required:
          type: boolean
          title: Required
          default: false
        placeholder:
          anyOf:
            - type: string
            - type: "null"
          title: Placeholder
        display_options:
          anyOf:
            - $ref: "#/components/schemas/DisplayOptions"
            - type: "null"
        options:
          anyOf:
            - items:
                $ref: "#/components/schemas/PropertyOption"
              type: array
            - type: "null"
          title: Options
        properties:
          anyOf:
            - items:
                $ref: "#/components/schemas/PropertySpec"
              type: array
            - type: "null"
          title: Properties
        min_value:
          anyOf:
            - type: number
            - type: "null"
          title: Min Value
        max_value:
          anyOf:
            - type: number
            - type: "null"
          title: Max Value
        min_length:
          anyOf:
            - type: integer
            - type: "null"
          title: Min Length
        max_length:
          anyOf:
            - type: integer
            - type: "null"
          title: Max Length
        pattern:
          anyOf:
            - type: string
            - type: "null"
          title: Pattern
        editor:
          anyOf:
            - type: string
            - type: "null"
          title: Editor
        renderer_options:
          anyOf:
            - $ref: "#/components/schemas/PropertyRendererOptions"
            - type: "null"
      additionalProperties: false
      type: object
      required:
        - name
        - type
        - display_name
        - description
      title: PropertySpec
      description: |-
        Single field on a node.

        `description` is HUMAN-FACING — shown under the field in the edit
        dialog. Keep it concise and explain what the field does.

        `llm_hint` is LLM-FACING — appears only in the `get_node_type` MCP
        response and in SDK schema output. Use it for catalog tool references
        (e.g., "Use `list_recordings`"), array shape, expected value idioms,
        or anything that would be noise in the UI. Optional; omit when the
        `description` already suffices for both audiences.
    PropertyType:
      type: string
      enum:
        - string
        - number
        - boolean
        - options
        - multi_options
        - fixed_collection
        - json
        - tool_refs
        - document_refs
        - recording_ref
        - credential_ref
        - mention_textarea
        - url
      title: PropertyType
      description: |-
        Bounded vocabulary of property types the renderer dispatches on.

        Adding a value here requires a matching arm in the frontend
        `<PropertyInput>` switch and (where relevant) the SDK codegen template.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
````
