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

# Read node cloud-init log

> Bearer PAT authentication; RBAC permission `clusters.operate`. Dispatches the read-only `upcloud_node_cloud_init_log` job: over the platform's bastion SSH lane it reads the node's `cloud-init status --long` and the tail of /var/log/cloud-init-output.log (the debug surface for node-group user_data), and waits for the report within a bounded budget; a slower job answers the operation ids to poll. Repeated calls attach to an in-flight run instead of dispatching duplicates. Browser mutations require CSRF.



## OpenAPI

````yaml https://platform.ankra.app/openapi.json post /api/v1/clusters/upcloud/{cluster_id}/nodes/{node_id}/cloud-init-log
openapi: 3.1.0
info:
  title: FastAPI
  version: 0.1.0
servers:
  - url: https://platform.ankra.app
security: []
paths:
  /api/v1/clusters/upcloud/{cluster_id}/nodes/{node_id}/cloud-init-log:
    post:
      tags:
        - UpCloud Cluster API
      summary: Read node cloud-init log
      description: >-
        Bearer PAT authentication; RBAC permission `clusters.operate`.
        Dispatches the read-only `upcloud_node_cloud_init_log` job: over the
        platform's bastion SSH lane it reads the node's `cloud-init status
        --long` and the tail of /var/log/cloud-init-output.log (the debug
        surface for node-group user_data), and waits for the report within a
        bounded budget; a slower job answers the operation ids to poll. Repeated
        calls attach to an in-flight run instead of dispatching duplicates.
        Browser mutations require CSRF.
      operationId: get_node_cloud_init_log_upcloud_pat
      parameters:
        - in: path
          name: cluster_id
          required: true
          schema:
            format: uuid
            type: string
        - in: path
          name: node_id
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeRemediationResult'
          description: Successful response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDetailError'
          description: Unauthenticated
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDetailError'
          description: Permission or CSRF check failed
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDetailError'
          description: Cluster or node not found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDetailError'
          description: Node remediation is not supported for this provider kind
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Request validation failed
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDetailError'
          description: Provider or internal failure
      security:
        - BearerAuth: []
components:
  schemas:
    NodeRemediationResult:
      properties:
        operation_id:
          format: uuid
          title: Operation Id
          type: string
        step_id:
          format: uuid
          title: Step Id
          type: string
        node_id:
          format: uuid
          title: Node Id
          type: string
        job_name:
          title: Job Name
          type: string
        status:
          type: string
          title: Status
        completed:
          title: Completed
          type: boolean
        attached_to_existing_run:
          title: Attached To Existing Run
          type: boolean
        report:
          title: Report
          type: object
        error_excerpt:
          title: Error Excerpt
          type: string
      required:
        - operation_id
        - step_id
        - node_id
        - job_name
        - status
        - completed
      title: NodeRemediationResult
      type: object
    ContractDetailError:
      example:
        detail: Cluster not found
      properties:
        detail:
          oneOf:
            - type: string
            - additionalProperties: true
              properties: {}
              type: object
      required:
        - detail
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: PAT
      scheme: bearer
      type: http

````