DeepFellow DOCS

Organizations and Projects

Projects provide a powerful way to organize, manage, and monitor your work.

  • Organize Workflows: Create separate environments for different teams, tasks, or clients to keep your work structured.
  • Monitor Consumption: Track the usage of specific resources (models, vector databases, file storage, etc.) within the scope of each project.
  • Govern Access and Resources: Manage access permissions, enforce usage limits, and provision models on a per-project basis.

What organizations and projects represent can vary in each case. The most common solution would be for organization to be a company and project – its division.

Auth in DeepFellow Server

You can authorize the request by providing an API Key as a bearer token. You can identify yourself as organization or project using the related API Keys.

Logging in

You can use DeepFellow Server Web Panel to perform this action.

Using DeepFellow Client

As the Admin:

$ deepfellow server login
      Please enter an email: admin@example.com
      Entered correct email.
      Please enter a password:
      Password accepted.
      Login successful.

Programmatically

curl -X 'POST' \
    'https://deepfellow-server-host/auth/login' \
    -H 'Content-Type: application/json' \
    -d '{
        "email": "admin@example.com",
        "password": "admin123"
    }'
import requests

response = requests.post(
    'https://deepfellow-server-host/auth/login',
    json={
        "email": "admin@example.com",
        "password": "admin123"
    },
    headers={
        "Content-Type": "application/json"
    }
)

data = response.json()
print(data)
const response = await fetch('https://deepfellow-server-host/auth/login', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        email: 'admin@example.com',
        password: 'admin123'
    })
});

const data = await response.json();
console.log(data);

Response:

{
    "access_token": "dfuser_171e04d3-e0b7-4ff2-9a05-a856aaec71ff",
    "expired_at": 1791968521
}

Create an Organization

You can use DeepFellow Server Web Panel to create organizations.

To create an organization, you have to be authorized as an Admin. Get your Admin Key from /auth/login or login using the deepfellow command. In the code samples the token is called DEEPFELLOW-ADMIN-API-KEY.

DeepFellow CLI

$ deepfellow server organization create Simplito
💡      Created Organization "Simplito"
      ID: ccafeb97f6e64467b6ef3be739bbb04f.

Programmatically

curl -X 'POST' \
   'https://deepfellow-server-host/admin/organization/' \
   -H 'Authorization: Bearer DEEPFELLOW-ADMIN-API-KEY' \
   -H 'Content-Type: application/json' \
   -d '{
       "name": "Simplito"
   }'
import requests

response = requests.post(
    "https://deepfellow-server-host/admin/organization/",
    json={"name": "Simplito"},
    headers={
        'Content-Type': 'application/json',
        "Authorization": "Bearer DEEPFELOW-ADMIN-API-KEY",
    },
)

data = response.json()
print(data)
const response = await fetch('https://deepfellow-server-host/admin/organization/', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        Authorization: 'Bearer DEEPFELLOW-ADMIN-API-KEY'
    },
    body: JSON.stringify({
        name: 'Simplito'
    })
});

const data = await response.json();
console.log(data);

Response:

{
    "organization": {
        "id": "68ee171ecb8b28e462882959",
        "created_at": 1760433950,
        "name": "Simplito",
        "owner_id": "68ecef07ec79da701ccf2407"
    }
}

Create an Organization API Key

You can use DeepFellow Server Web Panel to create an Organization API Key.

Your Organization API Key can be used to make API requests on projects within the organization. You must use your Admin API Key to create Organization API Key.

DeepFellow CLI

$ deepfellow server organization api-key create ORGANIZATION-ID
💡      Created a new API Key for Organization.
      Is it safe to display the Organization API Key? [y/n] (n): y
💡      Organization API Key: dforg_4d8d965e-0a9a-4f3d-b0ee-fdc5f894a6de

Programmatically

curl -X 'POST' \
    'https://deepfellow-server-host/v1/organization/admin_api_keys' \
    -H 'OpenAI-Organization: ORGANIZATION-ID' \
    -H 'Authorization: Bearer DEEPFELOW-ADMIN-API-KEY' \
    -H 'Content-Type: application/json' \
    -d '{
        "name": "Simplito Organization Key"
    }'
import requests

url = "https://deepfellow-server-host/v1/organization/admin_api_keys"
headers = {
    "OpenAI-Organization": "ORGANIZATION-ID",
    "Authorization": "Bearer DEEPFELOW-ADMIN-API-KEY",
    "Content-Type": "application/json",
}
data = {"name": "Simplito Organization Key"}

response = requests.post(url, headers=headers, json=data)

response_data = response.json()
print(response_data)
const response = await fetch('https://deepfellow-server-host/v1/organization/admin_api_keys', {
    method: 'POST',
    headers: {
        Authorization: 'Bearer DEEPFELOW-ADMIN-API-KEY',
        'OpenAI-Organization': 'ORGANIZATION-ID',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        name: 'Simplito Organization Key'
    })
});

const data = await response.json();
console.log(data);

Response:

{
    "id": "ORGANIZATION-ID",
    "object": "organization.admin_api_key",
    "name": "Simplito Organization Key",
    "redacted_value": "dforg..................................592",
    "owner": {
        "created_at": 1760358151,
        "id": "68ecef07ec79da701ccf2407",
        "name": "admin@example.com",
        "object": "organization.user",
        "role": "owner",
        "type": "user"
    },
    "created_at": 1760360660,
    "last_used_at": 1760360660,
    "value": "dforg_d27bf073-14d8-4c1a-83b5-93ee7ac11592"
}

Create a Project

You can use DeepFellow Server Web Panel to create a project.

Projects are created within an organization. They might represent a company division e.g. Human Resources or Accounting. Creating a project requires an Organization API Key. You can also use the Admin API Key, but then you also need to provide organization ID using the OpenAI-Organization header.

DeepFellow CLI

Acting as an organization:

$ deepfellow server project create "Human Resources"
      Provide models allowed to use in the Project: llama3.1:8b,qwen3:latest
      Provide custom endpoints allowed to use in the Project: /v1/ocr,/summarize
💡      Created Project "Human Resources"
      ID: ccafeb97f6e64467b6ef3be739bbb04f.

Acting as an Admin requires providing the organization ID:

$ deepfellow server project create "Human Resources" --organization-id ORGANIZATION-ID
      Provide models allowed to use in the Project: llama3.1:8b,qwen3:latest
      Provide custom endpoints allowed to use in the Project: /v1/ocr,/summarize
💡      Created Project "Human Resources"
        ID: ccafeb97f6e64467b6ef3be739bbb04f.

Programmatically

The examples use an Admin API Key. To use Organization API Key, just replace the Authorization token with the Organization API Key (then, OpenAI-Organization header is optional).

curl -X 'POST' \
    'https://deepfellow-server-host/v1/organization/projects' \
    -H 'OpenAI-Organization: ORGANIZATION-ID' \
    -H 'Authorization: Bearer DEEPFELLOW-ADMIN-API-KEY' \
    -H 'Content-Type: application/json' \
    -d '{
        "name": "Human Resources",
        "status": "active",
        "models": [
            "llama3.1:8b",
            "qwen3:latest"
        ],
        "custom_endpoints": [
            "/v1/ocr",
            "/summarize"
        ]
    }'
import requests

url = "https://deepfellow-server-host/v1/organization/projects"
headers = {
    "OpenAI-Organization": "ORGANIZATION-ID",
    "Authorization": "Bearer DEEPFELOW-ADMIN-API-KEY",
    "Content-Type": "application/json",
}
data = {
    "name": "Human Resources",
    "status": "active",
    "models": ["llama3.1:8b", "qwen3:latest"],
    "custom_endpoints": ["/v1/ocr", "/summarize"],
}

response = requests.post(url, headers=headers, json=data)

response_data = response.json()
print(response_data)
const response = await fetch('https://deepfellow-server-host/v1/organization/projects', {
    method: 'POST',
    headers: {
        'OpenAI-Organization': 'ORGANIZATION-ID',
        Authorization: 'Bearer DEEPFELOW-ADMIN-API-KEY',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        name: 'Human Resources',
        status: 'active',
        models: ['llama3.1:8b', 'qwen3:latest'],
        custom_endpoints: ['/v1/ocr', '/summarize']
    })
});

const data = await response.json();
console.log(data);

Response:

{
    "name": "Human Resources",
    "status": "active",
    "models": ["llama3.1:8b", "qwen3:latest"],
    "custom_endpoints": ["/v1/ocr", "/summarize"],
    "id": "68ed06ddcb8b28e462882957",
    "created_at": 1760357053
}

Create Project API Key

You can use DeepFellow Server Web Panel to create a Project API Key.

Project API Keys are generally used to perform actions inside projects they're assigned to. To create a Project API Key, you can use Admin API Key or Organization API Key. If you use Admin API Key, you also need to provide organization ID using the OpenAI-Organization header.

DeepFellow CLI

Acting as an organization:

$ deepfellow server project api-key create PROJECT-ID
💡      Created a new API Key for Project.
      Is it safe to display the Project API Key? [y/n] (n): y
💡      Project API Key: dfproj_4d8d965e-0a9a-4f3d-b0ee-fdc5f894a6de

Acting as an Admin requires providing the organization ID:

$ deepfellow server project api-key create PROJECT-ID --organization-id ORGANIZATION-ID
💡      Created a new API Key for Project.
      Is it safe to display the Project API Key? [y/n] (n): y
💡      Project API Key: dfproj_4d8d965e-0a9a-4f3d-b0ee-fdc5f894a6de

Programmatically

This example uses the Organization API Key:

curl -X 'POST' \
    'https://deepfellow-server-host/v1/organization/projects/PROJECT-ID/api_keys' \
    -H 'Authorization: Bearer ORGANIZATION-API-KEY' \
    -H 'Content-Type: application/json' \
    -d '{
        "name": "Human Resources Admin API Key"
    }'
import requests

response = requests.post(
    "https://deepfellow-server-host/v1/organization/projects/PROJECT-ID/api_keys",
    json={"name": "Human Resources Admin API Key"},
    headers={
        "Authorization": "Bearer ORGANIZATION-API-KEY",
        "Content-Type": "application/json",
    },
)

response_data = response.json()
print(response_data)
const response = await fetch(
    'https://deepfellow-server-host/v1/organization/projects/PROJECT-ID/api_keys',
    {
        method: 'POST',
        headers: {
            Authorization: 'Bearer ORGANIZATION-API-KEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            name: 'Human Resources Admin API Key'
        })
    }
);

const data = await response.json();
console.log(data);

Response:

{
    "id": "68ed0b56cb8b28e462882958",
    "object": "organization.project.api_key",
    "value": "dfproj_a02cc2e8-f00f-44b3-872d-6589f5ca7311",
    "redacted_value": "dfpro...................................311",
    "name": "Human Resources Admin API Key",
    "created_at": 1760365398,
    "last_used_at": 1760365398
}

Using API Keys in DeepFellow Server Requests

Most of the API endpoints require project level access. You can perform these actions using all of the keys. Rules regarding organization or project IDs are described in the table below:

Acting asOrganization IDProject ID
Projectoptionaloptional
Organizationoptionalrequired
Adminrequiredrequired

We use cookies on our website. We use them to ensure proper functioning of the site and, if you agree, for purposes such as analytics, marketing, and targeting ads.