Nuclei templates API

The templates API from Nuclei — 12 operation(s) for templates.

OpenAPI Specification

nuclei-templates-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: PDCP agents templates API
  version: '1.0'
  summary: ProjectDiscovery Cloud Platform
  description: For more details, checkout https://docs.projectdiscovery.io/api-reference/editor/scan
servers:
- url: https://api.projectdiscovery.io
  description: Production
- url: https://api.dev.projectdiscovery.io
  description: Development
- url: http://localhost:8085
  description: Localhost
security:
- X-API-Key: []
tags:
- name: templates
paths:
  /v1/template/public:
    get:
      summary: Get Public Template List
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetPublicTemplateList'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-template-public
      description: Get public-template list
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      - schema:
          type: integer
        in: query
        name: offset
        description: Pagination offset (no. of results to skip)
      - schema:
          type: integer
        in: query
        name: limit
        description: Pagination limit (max no. of results in response)
      - schema:
          type: string
        in: query
        description: 'template data fields '
        name: fields
  /v1/template/early:
    parameters: []
    get:
      summary: Get Early Template List
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetEarlyTempateList'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '403':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-early-templates
      description: Get pdcp early template lists
      security:
      - X-API-Key: []
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      - schema:
          type: integer
        in: query
        name: offset
      - schema:
          type: integer
        in: query
        name: limit
      - schema:
          type: string
        in: query
        name: fields
  /v1/template/early/{id}:
    parameters:
    - schema:
        type: string
      name: id
      in: path
      required: true
    get:
      summary: Get Early Template
      tags:
      - templates
      responses:
        '200':
          description: Shared Response
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                  template:
                    $ref: '#/components/schemas/TemplateData'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '403':
          $ref: '#/components/responses/MessageResponse'
        '404':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-early-templates-id
      description: Get early template text
      security:
      - X-API-Key: []
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
  /v1/template/public/{template_id}:
    parameters:
    - schema:
        type: string
      name: template_id
      in: path
      required: true
      description: 'unique Id of template '
    get:
      summary: Get Public Template
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetTemplateDataResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-public-template-data
      description: Get public template data
      parameters:
      - schema:
          type: string
        in: query
        name: fields
        description: 'template data fields '
      - schema:
          type: string
        in: header
        name: X-Team-Id
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
  /v1/template:
    parameters: []
    get:
      summary: Get Template List
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetUserTemplateListResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-templates
      security:
      - X-API-Key: []
      description: Get user private(my) templates
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      - schema:
          type: integer
        in: query
        name: offset
      - schema:
          type: integer
        in: query
        name: limit
      - schema:
          type: string
        in: query
        name: fields
    post:
      summary: Create Template
      tags:
      - templates
      operationId: post-v1-template
      responses:
        '200':
          $ref: '#/components/responses/CreateTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - X-API-Key: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - template
              properties:
                template:
                  type: string
                  description: 'Template in text format

                    '
                prompt:
                  type: string
      description: Create a private template
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      - schema:
          type: string
        in: query
        name: filename
        description: filename for template
      - schema:
          type: string
        in: query
        name: dir
        description: directories for template
    patch:
      summary: Update Template
      tags:
      - templates
      operationId: patch-v1-template
      responses:
        '200':
          $ref: '#/components/responses/UpdateTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - X-API-Key: []
      requestBody:
        $ref: '#/components/requestBodies/UpdateTemplateRequest'
      description: 'Update existing private template '
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
  /v1/template/{template_id}:
    parameters:
    - schema:
        type: string
      name: template_id
      in: path
      required: true
      description: 'unique Id of template '
    get:
      summary: Get Template
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '404':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-template-t_id
      security:
      - X-API-Key: []
      description: Get private template text using ID
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
    delete:
      summary: Delete Template
      tags:
      - templates
      operationId: delete-v1-template-template_id
      responses:
        '200':
          $ref: '#/components/responses/DeleteTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - X-API-Key: []
      description: Delete private template using ID
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
  /v1/template/ai:
    post:
      summary: Generate AI Template
      tags:
      - templates
      operationId: post-v1-template-ai
      responses:
        '200':
          $ref: '#/components/responses/GenerateTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '403':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      requestBody:
        $ref: '#/components/requestBodies/GenerateTemplateRequest'
      security:
      - X-API-Key: []
      description: Generate a private template with AI Engine
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
  /v1/template/share:
    get:
      summary: Get Shared Template List
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetShareStatusResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '404':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-template-share
      security:
      - X-API-Key: []
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      - schema:
          type: string
        in: query
        name: fields
      - schema:
          type: integer
        in: query
        name: limit
        description: Limit The numbers of items to return
      - schema:
          type: integer
        in: query
        name: offset
        description: Offset The numbers of items to skip
      - schema:
          type: string
        in: query
        description: SortAsc Sort results in ascending order (CSV field names)
        name: sort_asc
      - schema:
          type: string
        in: query
        name: sort_desc
        description: SortDesc Sort results in descending order (CSV field names)
      description: Shared template list
    post:
      summary: Share Template
      tags:
      - templates
      operationId: post-v1-template-share
      responses:
        '200':
          $ref: '#/components/responses/ShareTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '404':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - X-API-Key: []
      requestBody:
        $ref: '#/components/requestBodies/ShareTemplateRequest'
      description: Share a private template (shared-with-link)
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
  /v1/template/share/{template_id}:
    parameters:
    - schema:
        type: string
      name: template_id
      in: path
      required: true
      description: unique template ID
    get:
      summary: Get Shared Template
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetSharedTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '404':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-template-share-template_id
      parameters:
      - schema:
          type: string
        in: query
        name: fields
        description: get selected fields e.g. name,template_id,severity, etc
      description: Get a shared template text
      requestBody:
        content: {}
  /v1/template/github:
    parameters: []
    get:
      summary: Get Github Template List
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetUserTemplateListResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-github-templates
      security:
      - X-API-Key: []
      description: List of all user's github templates
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      - schema:
          type: integer
        in: query
        name: offset
      - schema:
          type: integer
        in: query
        name: limit
      - schema:
          type: string
        in: query
        name: fields
  /v1/template/github/{id}:
    parameters:
    - schema:
        type: string
      name: id
      in: path
      required: true
      description: 'unique Id of template '
    get:
      summary: Get Github Template
      tags:
      - templates
      responses:
        '200':
          $ref: '#/components/responses/GetTemplateResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '404':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      parameters:
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      operationId: get-v1-github-templates-id
      requestBody:
        content: {}
      description: Get github template text
      security:
      - X-API-Key: []
  /v1/template/stats:
    get:
      summary: Get Public Template Stats
      tags:
      - templates
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                  facets:
                    $ref: '#/components/schemas/TemplateStats'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-template-stats
      parameters:
      - schema:
          type: integer
        in: query
        name: limit
        description: Limit The numbers of items to return
      - schema:
          type: integer
        in: query
        name: offset
        description: Offset The numbers of items to skip
      - schema:
          type: string
        in: query
        name: fields
      - schema:
          type: string
        in: query
        name: sort_asc
        description: SortAsc Sort results in ascending order (CSV field names)
      - schema:
          type: string
        in: query
        name: sort_desc
        description: SortDesc Sort results in descending order (CSV field names)
      - schema:
          type: string
        in: query
        name: q
      - schema:
          type: boolean
        in: query
        name: highlight
        description: Highlight Whether to highlight the search results
      security:
      - X-API-Key: []
      description: Get public template statistics
components:
  responses:
    GetPublicTemplateList:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            - count
            - total
            - results
            properties:
              message:
                type: string
              count:
                type: integer
              total:
                type: integer
              results:
                type: array
                items:
                  $ref: '#/components/schemas/TemplateData'
    ShareTemplateResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            - result
            properties:
              message:
                type: string
              result:
                $ref: '#/components/schemas/SharedTemplateMetaData'
    GetSharedTemplateResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            - result
            properties:
              message:
                type: string
              result:
                $ref: '#/components/schemas/SharedTemplateData'
    GetUserTemplateListResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - results
            properties:
              message:
                type: string
              count:
                type: integer
              total:
                type: integer
              results:
                type: array
                items:
                  $ref: '#/components/schemas/TemplateData'
    CreateTemplateResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            - template_id
            - template_name
            properties:
              message:
                type: string
              template_id:
                type: string
              template_name:
                type: string
              template:
                $ref: '#/components/schemas/TemplateData'
    GenerateTemplateResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              template_id:
                type: string
              message:
                type: string
              completion:
                type: string
              name:
                type: string
              canRun:
                type: boolean
              comment:
                type: string
              is_valid:
                type: boolean
              retry_count:
                type: integer
              feedback:
                type: string
              targets:
                type: array
                items:
                  type: string
              retest:
                type: array
                items:
                  type: object
                  properties:
                    target:
                      type: string
                    matched:
                      type: boolean
                    vuln_id:
                      type: string
    ErrorResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              message:
                type: string
              kind:
                type: string
              code:
                type: string
              error:
                type: string
              error_id:
                type: string
              param:
                type: string
              status:
                type: integer
    DeleteTemplateResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
              status:
                type: boolean
            required:
            - message
    GetTemplateDataResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              message:
                type: string
              data:
                $ref: '#/components/schemas/TemplateData'
    GetTemplateResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              message:
                type: string
              template:
                $ref: '#/components/schemas/TemplateData'
        application/xml:
          schema:
            type: object
            properties: {}
          examples: {}
    UpdateTemplateResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            - template_id
            - template_name
            properties:
              message:
                type: string
              status:
                type: boolean
              template_id:
                type: string
              template_name:
                type: string
              template:
                $ref: '#/components/schemas/TemplateData'
    MessageResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              message:
                type: string
    GetShareStatusResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              count:
                type: integer
              message:
                type: string
              total:
                type: integer
              results:
                type: array
                items:
                  $ref: '#/components/schemas/SharedTemplateData'
    GetEarlyTempateList:
      description: Early Template Response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              message:
                type: string
              total:
                type: integer
              count:
                type: integer
              results:
                type: array
                items:
                  $ref: '#/components/schemas/TemplateData'
  schemas:
    SharedTemplateData:
      allOf:
      - $ref: '#/components/schemas/TemplateData'
      - type: object
        properties:
          ttl:
            type: string
            description: Time to live duration (1d ,1m etc)
          share_type:
            type: string
            description: Type of share (unlisted, users, organization)
          users_email:
            type: array
            description: List of email addresses or user IDs to share with (required if share_type is set to 'users')
            items:
              type: string
          organizations:
            type: array
            items:
              type: string
    TemplateData:
      description: Template Document or object
      type: object
      properties:
        uri:
          type: string
          description: The URI of the template (could be a path or a ksuid)
        id:
          type: string
          description: The ID of the template
        name:
          type: string
          description: The name of the template
        author:
          type: array
          description: The authors of the template
          items:
            type: string
        tags:
          type: array
          description: The tags of the template
          items:
            type: string
        severity:
          type: string
          description: The severity of the template
        type:
          type: string
          description: The type of the template
        dir:
          type: string
        ref:
          type: string
        vendor:
          type: string
          description: The vendor of the template
        product:
          type: string
          description: The product of the template
        classification:
          $ref: '#/components/schemas/Classification'
          description: Classification of template including additional metadata like cve-id, cwe-id etc
        metadata:
          type: object
        digest:
          type: string
          description: The digest of the template
        created_at:
          type: string
          format: date-time
          description: The time when template was created
        updated_at:
          type: string
          format: date-time
          description: The time when template was updated
        release_tag:
          type: string
          description: The release tag of the template (contains tag when the file was first released)
        is_early:
          type: boolean
          description: True if template is in early access
        raw:
          type: string
          description: The raw unparsed template
        template_id:
          type: string
        description:
          type: string
        filename:
          type: string
        impact:
          type: string
        ai_meta:
          $ref: '#/components/schemas/AIMeta'
        references:
          type: array
          items:
            type: string
        template_type:
          enum:
          - public
          - user
          - shared
        is_draft:
          type: boolean
        is_github:
          type: boolean
        is_new:
          type: boolean
        is_pdteam:
          description: Is the template from pdteam
          type: boolean
        remediation:
          type: string
    Classification:
      description: Classification of template including additional metadata like cve-id, cwe-id etc
      type: object
      properties:
        cve-id:
          type: array
          items:
            type: string
          description: CVE IDs for the template
        cwe-id:
          type: array
          items:
            type: string
          description: CWE IDs for the template
        cvss-metrics:
          type: string
          description: CVSS Metrics for the template
        cvss-score:
          type: number
          format: float
          description: CVSS Score for the template
        epss-score:
          type: number
          format: float
          description: EPSS Score for the template
        epss-percentile:
          type: number
          format: float
          description: EPSS Percentile for the template
        cpe:
          type: string
          description: CPE for the template
    TemplateStats:
      type: object
      x-examples:
        Example 1:
          date: '2024-02-03T08:40:19.911720715Z'
          statistics:
            authors:
              0h1in9e: 1
              0ri2n: 13
              0ut0fb4nd: 1
              0w4ys: 3
            classification:
              total: 4772
              cvss-metrics: 4650
              cvss-score: 2999
              cve-id: 2349
              cwe-id: 4679
            description: 6665
            directory:
              total: 0
            name: 7810
            references: 5369
            remediation: 2231
            severity:
              total: 7810
              critical: 947
              high: 1563
              medium: 1457
              low: 257
              info: 3551
              unknown: 35
            tags:
              '360': 1
              '3600': 1
              '''rpcms''': 1
            total: 7810
            type:
              total: 7810
              http: 7005
              dns: 21
              network: 134
              file: 312
              ssl: 27
              websocket: 0
              workflow: 191
              headless: 16
          template-version: main
      required:
      - buckets
      - missing
      - other
      - total
      properties:
        is_new:
          $ref: '#/components/schemas/StatBuckets'
        creation_stats:
          $ref: '#/components/schemas/StatBuckets'
        author:
          $ref: '#/components/schemas/StatBuckets'
        is_early:
          $ref: '#/components/schemas/StatBuckets'
        dir:
          $ref: '#/components/schemas/StatBuckets'
        product:
          $ref: '#/components/schemas/StatBuckets'
        severity:
          $ref: '#/components/schemas/StatBuckets'
        tags:
          $ref: '#/components/schemas/StatBuckets'
        type:
          $ref: '#/components/schemas/StatBuckets'
        vendor:
          $ref: '#/components/schemas/StatBuckets'
    AIMeta:
      type: object
      properties:
        model_used:
          description: The AI model used to generate the template
          type: string
        is_prompt_by_human:
          description: Whether the prompt was written by a human
          type: boolean
        is_template_by_human:
          description: Whether the template was written by a human
          type: boolean
        prompt:
          description: The prompt used to generate the template
          type: string
    SharedTemplateMetaData:
      title: SharedTemplateMetaData
      type: object
      properties:
        expires_at:
          type: string
          format: date-time
        organizations:
          type: array
          items:
            type: string
        share_type:
          type: string
        template_id:
          type: string
        users_email:
          type: array
          items:
            type: string
    StatBuckets:
      title: StatBuckets
      type: object
      properties:
        buckets:
        

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nuclei/refs/heads/main/openapi/nuclei-templates-api-openapi.yml