Projects /
Create or update project
Required permission
Project > Projects > Manage > Create
Request body
- {object}Create a project in a Northflank region
name
string requiredThe name of the project.min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the project.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$color
stringThe color of the project in the Northflank App.pattern^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$region
stringThe region the project will be hosted in.networking
{object}Advanced project networking settings.allowedIngressProjects
[array]Projects from which ingress request should be permitted.- stringpattern^[A-Za-z0-9-]+$
tailscale
{object}Defines this project's Tailscale sidecar settingsenabled
booleanWhether or not to inject a Tailscale sidecar for this project's resourcesauthKeyTags
[array]Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.- stringpattern^tag:.+
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, oroptions
{object}applyToAddons
booleanApply the Tailscale configuration to addons.applyToAddonJobs
booleanApply the Tailscale configuration to addon jobs (backups, restores).autoRedeployOnRegeneration
booleanAutomatically restart applicable services when the auth key is regeneratedtailscaleOptions
{object}acceptRoutes
booleanAccept advertised routes from the Tailscale networksecrets
{object}Relevant Tailscale secretsclientId
string requiredTailscale OAuth client ID (required for generating auth keys for Tailscale)clientSecret
string requiredTailscale OAuth client secret (required for generating auth keys for Tailscale)hostAliases
{object}Defines the project host alias overrides to apply to /etc/hosts in resource containersenabled
booleanEnable support for adding /etc/hosts overrides for a containerhostEntries
[array]Entries to add to /etc/hosts- {object}
ipAddress
string requiredpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$hostnames
[array] required- stringpattern^(([a-z0-9][a-z0-9\-]*)|[a-z0-9]\.)*([a-z]+|xn\-\-[a-z0-9]+)\.?$
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, or
- {object}Create a project in a BYOC cluster
name
string requiredThe name of the project.min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the project.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$color
stringThe color of the project in the Northflank App.pattern^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$clusterId
stringThe BYOC cluster this project will be hosted in.pattern^((org|team)\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$networking
{object}Advanced project networking settings.allowedIngressProjects
[array]Projects from which ingress request should be permitted.- stringpattern^[A-Za-z0-9-]+$
tailscale
{object}Defines this project's Tailscale sidecar settingsenabled
booleanWhether or not to inject a Tailscale sidecar for this project's resourcesauthKeyTags
[array]Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.- stringpattern^tag:.+
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, oroptions
{object}applyToAddons
booleanApply the Tailscale configuration to addons.applyToAddonJobs
booleanApply the Tailscale configuration to addon jobs (backups, restores).autoRedeployOnRegeneration
booleanAutomatically restart applicable services when the auth key is regeneratedtailscaleOptions
{object}acceptRoutes
booleanAccept advertised routes from the Tailscale networksecrets
{object}Relevant Tailscale secretsclientId
string requiredTailscale OAuth client ID (required for generating auth keys for Tailscale)clientSecret
string requiredTailscale OAuth client secret (required for generating auth keys for Tailscale)hostAliases
{object}Defines the project host alias overrides to apply to /etc/hosts in resource containersenabled
booleanEnable support for adding /etc/hosts overrides for a containerhostEntries
[array]Entries to add to /etc/hosts- {object}
ipAddress
string requiredpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$hostnames
[array] required- stringpattern^(([a-z0-9][a-z0-9\-]*)|[a-z0-9]\.)*([a-z]+|xn\-\-[a-z0-9]+)\.?$
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, or
Response body
- {object}Response object.
data
{object} requiredResult data.id
string requiredIdentifier for the projectname
string requiredThe name of the project.min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringThe description of the project.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$color
stringThe color of the project in the Northflank App.pattern^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$region
stringThe region the project will be hosted in.clusterId
stringThe BYOC cluster this project will be hosted in.pattern^((org|team)\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$networking
{object}Advanced project networking settings.allowedIngressProjects
[array]Projects from which ingress request should be permitted.- stringpattern^[A-Za-z0-9-]+$
tailscale
{object}Defines this project's Tailscale sidecar settingsenabled
booleanWhether or not to inject a Tailscale sidecar for this project's resourcesauthKeyTags
[array]Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.- stringpattern^tag:.+
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, oroptions
{object}applyToAddons
booleanApply the Tailscale configuration to addons.applyToAddonJobs
booleanApply the Tailscale configuration to addon jobs (backups, restores).autoRedeployOnRegeneration
booleanAutomatically restart applicable services when the auth key is regeneratedtailscaleOptions
{object}acceptRoutes
booleanAccept advertised routes from the Tailscale networksecrets
{object}Relevant Tailscale secretsclientId
string requiredTailscale OAuth client ID (required for generating auth keys for Tailscale)clientSecret
string requiredTailscale OAuth client secret (required for generating auth keys for Tailscale)hostAliases
{object}Defines the project host alias overrides to apply to /etc/hosts in resource containersenabled
booleanEnable support for adding /etc/hosts overrides for a containerhostEntries
[array]Entries to add to /etc/hosts- {object}
ipAddress
string requiredpattern^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$hostnames
[array] required- stringpattern^(([a-z0-9][a-z0-9\-]*)|[a-z0-9]\.)*([a-z]+|xn\-\-[a-z0-9]+)\.?$
restrictions
{object}enabled
boolean requiredWhether or not to restrict the settings to resources with specific tagstagMatchCondition
stringIf all or any of the tags must be present on the target for it to match the condition.one ofand, orcreatedAt
stringtime of creationupdatedAt
stringtime of update
PUT /v1/projects
Example request
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request PUT \
--data '{"name":"New Project","description":"This is a new project.","color":"#EF233C","region":"europe-west","networking":{"tailscale":{"restrictions":{"tagMatchCondition":"or"}},"hostAliases":{"restrictions":{"tagMatchCondition":"or"}}}}' \
https://api.northflank.com/v1/projects
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request PUT \
--data '{"name":"New Project","description":"This is a new project.","color":"#EF233C","clusterId":"gcp-cluster-1","networking":{"tailscale":{"restrictions":{"tagMatchCondition":"or"}},"hostAliases":{"restrictions":{"tagMatchCondition":"or"}}}}' \
https://api.northflank.com/v1/projects
Example response
200 OK
JSON
{
"data": {
"id": "example-project",
"name": "New Project",
"description": "This is a new project.",
"color": "#EF233C",
"region": "europe-west",
"clusterId": "gcp-cluster-1",
"networking": {
"tailscale": {
"restrictions": {
"tagMatchCondition": "or"
}
},
"hostAliases": {
"restrictions": {
"tagMatchCondition": "or"
}
}
},
"createdAt": "2000-01-01T12:00:00.000Z",
"updatedAt": "2000-01-01T12:00:00.000Z"
}
}