Nuclei templates API
The templates API from Nuclei — 12 operation(s) for templates.
The templates API from Nuclei — 12 operation(s) for templates.
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