Before you start, make sure difyctl is installed.
Step 1: Sign In
-
Sign in to your Dify host. On a self-hosted deployment, use the console API URL.
difyctl auth login --host https://dify.example.com
difyctl prints a one-time code and a verification URL, then waits:
! Copy this one-time code: WDJP-XKLM
Open: https://dify.example.com/device
-
Open the URL in a browser, enter the code, and sign in. Return to the terminal and you’ll see:
✓ Logged in to dify.example.com as <your-email> (<your-name>)
Workspace: <your-workspace>
Step 2: Find Your App
List the apps in your workspace:
You should see something like this:
NAME ID MODE UPDATED
Customer FAQ 0a1b2c3d-4e5f-6789-abcd-ef0123456789 chat 2026-06-08T03:14:27.521839
Daily Report 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b workflow 2026-06-05T22:41:09.812016
Copy the ID of the app you want to run. The examples below use the two IDs from this table.
Step 3: Run Your App
How you pass input depends on the app type.
Pass your message as a positional argument:difyctl run app 0a1b2c3d-4e5f-6789-abcd-ef0123456789 "What are your business hours?"
The reply prints to stdout. For Chatbot, Chatflow, and Agent apps, a hint also prints to stderr so you can continue the same conversation later:Our business hours are Monday through Friday, 9am to 6pm PT.
hint: continue this conversation with --conversation 4f7d8c2a-9b1e-4c6d-8a3f-5e2b7c9d0a1f
Pass inputs as a single JSON object with --inputs:difyctl run app 7f3e9a2b-1c4d-4e8f-9a0b-2d5c8e1f4a7b --inputs '{"topic":"quarterly report","audience":"executives"}'
The workflow’s outputs print to stdout as JSON:{"summary":"Q3 revenue grew 14% YoY...","sections":["revenue","costs","outlook"]}
Next Steps
Last modified on June 25, 2026