curl --request POST \
--url https://neo.api.projectdiscovery.io/api/v1/projects \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"settings_md": "<string>",
"tags": [
"<string>"
],
"type": "shared"
}
'import requests
url = "https://neo.api.projectdiscovery.io/api/v1/projects"
payload = {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"settings_md": "<string>",
"tags": ["<string>"],
"type": "shared"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
settings_md: '<string>',
tags: ['<string>'],
type: 'shared'
})
};
fetch('https://neo.api.projectdiscovery.io/api/v1/projects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://neo.api.projectdiscovery.io/api/v1/projects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'settings_md' => '<string>',
'tags' => [
'<string>'
],
'type' => 'shared'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://neo.api.projectdiscovery.io/api/v1/projects"
payload := strings.NewReader("{\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"settings_md\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"type\": \"shared\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://neo.api.projectdiscovery.io/api/v1/projects")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"settings_md\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"type\": \"shared\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://neo.api.projectdiscovery.io/api/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"settings_md\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"type\": \"shared\"\n}"
response = http.request(request)
puts response.read_body{
"project": {
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"member_count": 1,
"name": "<string>",
"owner_email": "jsmith@example.com",
"settings_md": "<string>",
"shared_with_team": true,
"tags": [
"<string>"
],
"task_count": 1,
"updated_at": "2023-11-07T05:31:56Z",
"cap_percent_used": 123,
"cap_used_credits": 123,
"is_owner": true,
"issue_count": 1,
"issues_by_severity": [
{
"count": 123,
"label": "<string>"
}
],
"issues_by_status": [
{
"count": 123,
"label": "<string>"
}
],
"read_only": true,
"shared_team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"spending_cap_credits": 123
}
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}Create project
Create a new project. The creator is automatically added as an admin member.
curl --request POST \
--url https://neo.api.projectdiscovery.io/api/v1/projects \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"settings_md": "<string>",
"tags": [
"<string>"
],
"type": "shared"
}
'import requests
url = "https://neo.api.projectdiscovery.io/api/v1/projects"
payload = {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"settings_md": "<string>",
"tags": ["<string>"],
"type": "shared"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
settings_md: '<string>',
tags: ['<string>'],
type: 'shared'
})
};
fetch('https://neo.api.projectdiscovery.io/api/v1/projects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://neo.api.projectdiscovery.io/api/v1/projects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'settings_md' => '<string>',
'tags' => [
'<string>'
],
'type' => 'shared'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://neo.api.projectdiscovery.io/api/v1/projects"
payload := strings.NewReader("{\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"settings_md\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"type\": \"shared\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://neo.api.projectdiscovery.io/api/v1/projects")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"settings_md\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"type\": \"shared\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://neo.api.projectdiscovery.io/api/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"settings_md\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"type\": \"shared\"\n}"
response = http.request(request)
puts response.read_body{
"project": {
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"member_count": 1,
"name": "<string>",
"owner_email": "jsmith@example.com",
"settings_md": "<string>",
"shared_with_team": true,
"tags": [
"<string>"
],
"task_count": 1,
"updated_at": "2023-11-07T05:31:56Z",
"cap_percent_used": 123,
"cap_used_credits": 123,
"is_owner": true,
"issue_count": 1,
"issues_by_severity": [
{
"count": 123,
"label": "<string>"
}
],
"issues_by_status": [
{
"count": 123,
"label": "<string>"
}
],
"read_only": true,
"shared_team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"spending_cap_credits": 123
}
}{
"error": "Bad request",
"code": "user_spending_cap_reached",
"error_id": "<string>",
"kind": "forbidden request",
"message": "<string>"
}Authorizations
JWT authentication token
Body
Optional. Client-supplied project UUID. If omitted, the server generates one. If a project with this id already exists, the request is rejected with 409.
Optional. Project name. If omitted or empty the server stores an empty name and may generate one asynchronously from the first task.
128Optional initial project settings markdown. Values longer than 35k characters are truncated by the API and suffixed with "[truncated] max char limit 35k".
Optional. Initial tags. Capped at 20. The agent merges additional tags onto this set asynchronously.
Optional. Workspace type, fixed at creation and cannot be changed later. 'shared' (default) runs in the common team workspace and is shared with the whole team. 'dedicated' uses an isolated, private workspace accessible only to invited members.
shared, dedicated Response
Project created
Show child attributes
Show child attributes

