Northflank API

The Northflank REST API provides programmatic access to manage projects, services, jobs, addons, workflows, pipelines, volumes, secrets, cloud providers, domains, integrations, load balancers, teams, and organizations on the Northflank platform.

OpenAPI Specification

northflank-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Northflank API
  version: v1
  description: >-
    Minimal OpenAPI 3.1 description of the Northflank REST API for managing
    projects, services, jobs, and addons on the Northflank platform.
  x-generated-from: https://northflank.com/docs/v1/api/
  x-generated-by: claude-crawl-2026-05-08
servers:
  - url: https://api.northflank.com/v1
    description: Northflank API production server
security:
  - bearerAuth: []
tags:
  - name: Projects
  - name: Services
  - name: Jobs
  - name: Addons
paths:
  /team/projects:
    get:
      tags: [Projects]
      summary: List projects
      operationId: listProjects
      responses:
        '200':
          description: A list of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericListResponse'
    post:
      tags: [Projects]
      summary: Create a project
      operationId: createProject
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericObject'
      responses:
        '200':
          description: The created project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
  /projects/{projectId}/services:
    get:
      tags: [Services]
      summary: List services in a project
      operationId: listServices
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of services.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericListResponse'
    post:
      tags: [Services]
      summary: Create a service
      operationId: createService
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericObject'
      responses:
        '200':
          description: The created service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
  /projects/{projectId}/services/{serviceId}:
    get:
      tags: [Services]
      summary: Get a service
      operationId: getService
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '200':
          description: A service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
    delete:
      tags: [Services]
      summary: Delete a service
      operationId: deleteService
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/ServiceId'
      responses:
        '200':
          description: Deletion acknowledged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
  /projects/{projectId}/jobs:
    get:
      tags: [Jobs]
      summary: List jobs in a project
      operationId: listJobs
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of jobs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericListResponse'
    post:
      tags: [Jobs]
      summary: Create a job
      operationId: createJob
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericObject'
      responses:
        '200':
          description: The created job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
  /projects/{projectId}/jobs/{jobId}/run:
    post:
      tags: [Jobs]
      summary: Run a job
      operationId: runJob
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - name: jobId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Run acknowledged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
  /projects/{projectId}/addons:
    get:
      tags: [Addons]
      summary: List addons in a project
      operationId: listAddons
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: A list of addons.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericListResponse'
    post:
      tags: [Addons]
      summary: Create an addon
      operationId: createAddon
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericObject'
      responses:
        '200':
          description: The created addon.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
  /projects/{projectId}/addons/{addonId}:
    get:
      tags: [Addons]
      summary: Get an addon
      operationId: getAddon
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - name: addonId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: An addon.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
    delete:
      tags: [Addons]
      summary: Delete an addon
      operationId: deleteAddon
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - name: addonId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Deletion acknowledged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  parameters:
    ProjectId:
      name: projectId
      in: path
      required: true
      schema:
        type: string
    ServiceId:
      name: serviceId
      in: path
      required: true
      schema:
        type: string
  schemas:
    GenericObject:
      type: object
      additionalProperties: true
    GenericListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/GenericObject'
      additionalProperties: true