Function Execution
Execute and test your functions directly from the CLI.
Use invoke run to execute a function on your machine without a running execution service โ same isolated-vm sandbox, no network connection required.
Invoking Functionsโ
Basic Invocationโ
Invoke a function using its name or ID:
invoke function:invoke my-api
Example output:
Executing function 'my-api'...
โ
Function executed successfully in 63ms
๐ค Response:
{
"message": "Hello, World!",
"timestamp": 1708675200687
}
HTTP Methodsโ
Specify the HTTP method:
# GET request (default)
invoke function:invoke my-api --method GET
# POST request
invoke function:invoke my-api --method POST
# Other methods
invoke function:invoke my-api --method PUT
invoke function:invoke my-api --method DELETE
invoke function:invoke my-api --method PATCH
Sending Dataโ
JSON data:
invoke function:invoke my-api \
--method POST \
--data '{"name": "John", "email": "john@example.com"}'
Raw body:
invoke function:invoke my-api \
--method POST \
--body "Plain text data"
From file:
invoke function:invoke my-api \
--method POST \
--file ./request-data.json
Priority: --body > --data > --file
Custom Headersโ
Add custom headers:
# Single header
invoke function:invoke my-api \
--header "Authorization: Bearer token123"
# Multiple headers
invoke function:invoke my-api \
--header "Authorization: Bearer token123" \
--header "X-Request-ID: abc-123" \
--header "Content-Type: application/json"
URL Pathsโ
Append paths to the invocation URL:
# Invoke /users/123
invoke function:invoke my-api --path "/users/123"
# Invoke /api/v1/products
invoke function:invoke my-api --path "/api/v1/products"
This transforms:
- From:
http://localhost:3001/invoke/{id} - To:
http://localhost:3001/invoke/{id}/users/123
Timeout Controlโ
Set a custom timeout (in milliseconds):
# 60 second timeout
invoke function:invoke my-api --timeout 60000
# Default is 30 seconds
invoke function:invoke my-api --timeout 30000
JSON Outputโ
Get machine-readable output:
invoke function:invoke my-api --output json
Example JSON output:
{
"status": 200,
"duration": 63,
"data": {
"message": "Hello, World!"
}
}
Testing Functionsโ
The function:test command provides enhanced output with function details and recent logs.
Basic Testโ
invoke function:test my-api
Example output:
๐งช Testing Function:
Name: my-api
ID: cd23cc1f-936f-445e-b2ba-dd8306b8dc01
Active: Yes
Version: 2
Requires API Key: No
โก Executing...
โ
Success in 47ms
๐ Response:
{
"message": "Test successful"
}
๐ Recent Logs:
โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโ
โ Time โ Status โ Duration โ
โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโค
โ 23/2/2026, 2:10:57 pm โ โ
200 โ 47ms โ
โ 23/2/2026, 2:08:00 pm โ โ
200 โ 30ms โ
โ 23/2/2026, 2:07:51 pm โ โ
200 โ 33ms โ
โโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโ
Test with Dataโ
invoke function:test my-api \
--method POST \
--data '{"test": "value"}'
Test with Custom Pathโ
invoke function:test my-api --path "/api/status"
Complete Examplesโ
REST API Testingโ
# GET request
invoke function:invoke my-api \
--method GET \
--path "/users/123" \
--header "Authorization: Bearer token123"
# POST request
invoke function:invoke my-api \
--method POST \
--path "/users" \
--header "Content-Type: application/json" \
--data '{"name": "John Doe", "email": "john@example.com"}'
# PUT request
invoke function:invoke my-api \
--method PUT \
--path "/users/123" \
--data '{"name": "Jane Doe"}'
# DELETE request
invoke function:invoke my-api \
--method DELETE \
--path "/users/123"
Authentication Testingโ
# Test with API key
invoke function:invoke my-api \
--header "x-api-key: func_abc123..." \
--data '{"action": "process"}'
# Test with Bearer token
invoke function:invoke my-api \
--header "Authorization: Bearer eyJhbGc..." \
--method POST
File Upload Simulationโ
# Send JSON file content
invoke function:invoke my-api \
--method POST \
--file ./upload-data.json
# Send custom content type
invoke function:invoke my-api \
--method POST \
--header "Content-Type: text/csv" \
--body "$(cat data.csv)"
Webhook Testingโ
# Simulate webhook payload
invoke function:invoke webhook-handler \
--method POST \
--header "X-Webhook-Signature: sha256=abc..." \
--data '{
"event": "payment.success",
"data": {
"amount": 1000,
"currency": "USD"
}
}'
Load Testingโ
Simple load test using a loop:
#!/bin/bash
echo "Running 100 requests..."
for i in {1..100}; do
invoke function:invoke my-api \
--output json \
--data "{\"request\": $i}" \
>> results.log
done
echo "Complete! Check results.log"
Error Handlingโ
Test error scenarios:
# Test with invalid data
invoke function:invoke my-api \
--method POST \
--data '{"invalid": true}'
# Test timeout
invoke function:invoke my-api \
--timeout 1000 # 1 second timeout
Comparing Invoke vs Testโ
| Feature | function:invoke | function:test |
|---|---|---|
| Execute function | โ | โ |
| Show response | โ | โ |
| Function details | โ | โ |
| Recent logs | โ | โ |
| JSON output | โ | โ |
| Custom timeout | โ | โ |
| Use case | Production/automation | Development/debugging |
Tipsโ
Quick Function Testโ
# Fast syntax check
invoke function:test my-api --data '{}'
Debugging Responsesโ
# Get full response details
invoke function:invoke my-api --output json | jq '.'
Automation Scriptsโ
#!/bin/bash
# Automated testing script
response=$(invoke function:invoke my-api \
--method POST \
--data '{"test": true}' \
--output json)
status=$(echo $response | jq -r '.status')
if [ "$status" = "200" ]; then
echo "โ
Test passed"
exit 0
else
echo "โ Test failed: $status"
exit 1
fi
Performance Monitoringโ
# Measure response time
for i in {1..10}; do
invoke function:invoke my-api --output json | \
jq '.duration' | \
awk '{sum+=$1} END {print "Avg:", sum/NR "ms"}'
done
Using with CI/CDโ
GitHub Actions example:
- name: Test function
run: |
invoke function:test my-api --output json > test-result.json
if [ $? -ne 0 ]; then
echo "Function test failed"
exit 1
fi
Error Messagesโ
"Function not found"โ
The function name or ID doesn't exist:
invoke function:get my-api # Check if function exists
invoke function:list # List all functions
"No active version"โ
Upload and activate a version:
invoke function:versions:upload my-api ./my-function --switch
"Execution failed"โ
Check the function logs:
invoke function:logs my-api --limit 10
"Timeout"โ
Increase timeout or optimize your function:
invoke function:invoke my-api --timeout 60000