Skip to main content

API keys

Langflow provides an API key functionality that allows users to access their individual components and flows without traditional login authentication. The API key is a user-specific token that can be included in the request header, query parameter, or as a command line argument to authenticate API calls. This documentation outlines how to generate, use, and manage API keys in Langflow.

info

The default user and password are set using the LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD environment variables. The default values are langflow and langflow, respectively.

Generate an API keyโ€‹

Generate a user-specific token to use with Langflow.

Generate an API key with the Langflow UIโ€‹

  1. Click your user icon and select Settings.
  2. Click Langflow API, and then click Add New.
  3. Name your key, and then click Create Secret Key.
  4. Copy the API key and store it in a secure location.

Generate an API key with the Langflow CLIโ€‹


_13
langflow api-key
_13
# or
_13
python -m langflow api-key
_13
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
_13
โ”‚ API Key Created Successfully: โ”‚
_13
โ”‚ โ”‚
_13
โ”‚ sk-O0elzoWID1izAH8RUKrnnvyyMwIzHi2Wk-uXWoNJ2Ro โ”‚
_13
โ”‚ โ”‚
_13
โ”‚ This is the only time the API key will be displayed. โ”‚
_13
โ”‚ Make sure to store it in a secure location. โ”‚
_13
โ”‚ โ”‚
_13
โ”‚ The API key has been copied to your clipboard. Cmd + V to paste it. โ”‚
_13
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Authenticate requests with the Langflow API keyโ€‹

Include your API key in API requests to authenticate requests to Langflow.

Include the API key in the HTTP headerโ€‹

To use the API key when making API requests with cURL, include the API key in the HTTP header.


_10
curl -X POST \
_10
"http://127.0.0.1:7860/api/v1/run/*`YOUR_FLOW_ID`*?stream=false" \
_10
-H 'Content-Type: application/json' \
_10
-H 'x-api-key: *`YOUR_API_KEY`*' \
_10
-d '{"inputs": {"text":""}, "tweaks": {}}'

To instead pass the API key as a query parameter, do the following:


_10
curl -X POST \
_10
"http://127.0.0.1:7860/api/v1/run/*`YOUR_FLOW_ID`*?x-api-key=*`YOUR_API_KEY`*?stream=false" \
_10
-H 'Content-Type: application/json' \
_10
-d '{"inputs": {"text":""}, "tweaks": {}}'

To use the API key when making API requests with the Python requests library, include the API key as a variable string.


_93
import argparse
_93
import json
_93
from argparse import RawTextHelpFormatter
_93
import requests
_93
from typing import Optional
_93
import warnings
_93
try:
_93
from langflow.load import upload_file
_93
except ImportError:
_93
warnings.warn("Langflow provides a function to help you upload files to the flow. Please install langflow to use it.")
_93
upload_file = None
_93
_93
BASE_API_URL = "http://127.0.0.1:7860"
_93
FLOW_ID = "*`YOUR_FLOW_ID`*"
_93
ENDPOINT = "" # You can set a specific endpoint name in the flow settings
_93
_93
# You can tweak the flow by adding a tweaks dictionary
_93
# e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}}
_93
TWEAKS = {
_93
"ChatInput-8a86T": {},
_93
"Prompt-pKfl9": {},
_93
"ChatOutput-WcGpD": {},
_93
"OpenAIModel-5UyvQ": {}
_93
}
_93
_93
def run_flow(message: str,
_93
endpoint: str,
_93
output_type: str = "chat",
_93
input_type: str = "chat",
_93
tweaks: Optional[dict] = None,
_93
api_key: Optional[str] = None) -> dict:
_93
"""
_93
Run a flow with a given message and optional tweaks.
_93
_93
:param message: The message to send to the flow
_93
:param endpoint: The ID or the endpoint name of the flow
_93
:param tweaks: Optional tweaks to customize the flow
_93
:return: The JSON response from the flow
_93
"""
_93
api_url = f"{BASE_API_URL}/api/v1/run/{endpoint}"
_93
_93
payload = {
_93
"input_value": message,
_93
"output_type": output_type,
_93
"input_type": input_type,
_93
}
_93
headers = None
_93
if tweaks:
_93
payload["tweaks"] = tweaks
_93
if api_key:
_93
headers = {"x-api-key": api_key}
_93
response = requests.post(api_url, json=payload, headers=headers)
_93
return response.json()
_93
_93
def main():
_93
parser = argparse.ArgumentParser(description="""Run a flow with a given message and optional tweaks.
_93
Run it like: python <your file>.py "your message here" --endpoint "your_endpoint" --tweaks '{"key": "value"}'""",
_93
formatter_class=RawTextHelpFormatter)
_93
parser.add_argument("message", type=str, help="The message to send to the flow")
_93
parser.add_argument("--endpoint", type=str, default=ENDPOINT or FLOW_ID, help="The ID or the endpoint name of the flow")
_93
parser.add_argument("--tweaks", type=str, help="JSON string representing the tweaks to customize the flow", default=json.dumps(TWEAKS))
_93
parser.add_argument("--api_key", type=str, help="API key for authentication", default=None)
_93
parser.add_argument("--output_type", type=str, default="chat", help="The output type")
_93
parser.add_argument("--input_type", type=str, default="chat", help="The input type")
_93
parser.add_argument("--upload_file", type=str, help="Path to the file to upload", default=None)
_93
parser.add_argument("--components", type=str, help="Components to upload the file to", default=None)
_93
_93
args = parser.parse_args()
_93
try:
_93
tweaks = json.loads(args.tweaks)
_93
except json.JSONDecodeError:
_93
raise ValueError("Invalid tweaks JSON string")
_93
_93
if args.upload_file:
_93
if not upload_file:
_93
raise ImportError("Langflow is not installed. Please install it to use the upload_file function.")
_93
elif not args.components:
_93
raise ValueError("You need to provide the components to upload the file to.")
_93
tweaks = upload_file(file_path=args.upload_file, host=BASE_API_URL, flow_id=args.endpoint, components=[args.components], tweaks=tweaks)
_93
_93
response = run_flow(
_93
message=args.message,
_93
endpoint=args.endpoint,
_93
output_type=args.output_type,
_93
input_type=args.input_type,
_93
tweaks=tweaks,
_93
api_key=args.api_key
_93
)
_93
_93
print(json.dumps(response, indent=2))
_93
_93
if __name__ == "__main__":
_93
main()

To pass the API key to your script with a command line argument, do the following:


_10
python your_script.py "*`YOUR_INPUT_MESSAGE`*" --api_key "*`YOUR_API_KEY`*"

Security considerationsโ€‹

  • Visibility: For security reasons, the API key cannot be retrieved again through the UI.
  • Scope: The key allows access only to the flows and components of the specific user to whom it was issued.

Custom API endpointโ€‹

To choose a custom name for your API endpoint, select Project Settings > Endpoint Name and name your endpoint.

Revoke an API keyโ€‹

To revoke an API key, delete it from the the list of keys in the Settings menu.

  1. Click your user icon and select Settings.
  2. Click Langflow API.
  3. Select the keys you want to delete and click the trash can icon.

This action immediately invalidates the key and prevents it from being used again.

Hi, how can I help you?