Note: Custom Actions require a Builder plan or higher. Upgrade to Builder
Test your actions inside the configuration interface.
1. Configure your action#
Set up the URL, method, and parameters as usual.
2. Open the test panel#
The test panel shows:
- Resolved URL with variables.
- Headers with substitutions.
- Body data structure.
- Query parameters.
3. Provide test values#
For AI-generated parameters, enter test values:
{
"searchQuery": "boardroom 4 commissioning",
"limit": 10,
"includeArchived": false
}
4. Execute the test#
Click Test Request to:
- Send the actual HTTP request.
- View response status.
- Inspect response body.
- Check response time.
5. Review results#
{
"status": 200,
"response": {
"results": [
{
"id": 123,
"title": "Boardroom 4 commissioning report"
}
],
"total": 42
},
"time": "234ms"
}
Variable resolution#
Verify all variables resolve correctly:
URL: {{var.BASE_URL}}/api/{{endpoint}}
Header: Bearer {{var.API_KEY}}
URL: https://api.example.com/api/rooms
Header: Bearer sk-abc123...
Parameter types#
Test each parameter type:
| Type | Test value | Expected |
|---|---|---|
| String | "boardroom-4" |
Text value. |
| Number | 42 |
Numeric. |
| Boolean | true |
Boolean. |
| Object | {"key": "value"} |
JSON object. |
| Array | [1, 2, 3] |
JSON array. |
Edge cases#
Test boundary conditions:
- Empty values: optional parameters.
- Special characters: in URLs and JSON strings.
- Large payloads: big objects or arrays.
- Invalid inputs: error handling.
Authentication errors#
401 Unauthorized
{
"error": "Invalid API key"
}
Solution: check your API key variable:
- Verify the variable value.
- Check header format (
Bearer,Basic, etc.). - Use the secret type for sensitive values.
CORS errors#
Browser console error
Access to fetch at 'api.example.com' from origin 'app.avcodex.com' has been blocked by CORS policy
Solution: the API must allow requests from app.avcodex.com:
- Add
app.avcodex.comto allowed origins. - Or use a proxy endpoint.
- Or run the call server-side.
Variable not resolving#
Issue: {{var.API_KEY}} appears literally in the request.
Debug steps
- Check the variable exists in the Variables tab.
- Verify the exact name (case-sensitive).
- Confirm the variable has a value.
- Check syntax:
{{var.NAME}}.
JSON parse errors#
Issue: body parameters not formatting correctly.
// Bad
{
"data": "{"nested": "value"}"
}
// Good
{
"data": {
"nested": "value"
}
}
Solution: use the proper type (Object/Array) for nested data.
Enable detailed logging for troubleshooting:
Request details#
View the exact request being sent:
POST https://api.example.com/endpoint
Headers:
Authorization: Bearer [REDACTED]
Content-Type: application/json
Body:
{
"query": "boardroom 4",
"filters": {
"status": "active"
}
}
Response details#
Inspect the full response:
{
"status": 200,
"headers": {
"content-type": "application/json",
"x-request-id": "req_123"
},
"body": {
"success": true,
"data": [...]
}
}
For actions with dependencies:
1. Test prerequisites first#
GET /api/me → Returns {"id": 123}
GET /api/users/123/details → Uses output from Action 1
2. Simulate dependency output#
Test with mock values:
- Manually provide expected values.
- Verify parameter mapping.
- Check JSONPath selectors.
3. Test the full chain#
In a conversation:
- Trigger the first action.
- Verify output is stored.
- Trigger the dependent action.
- Confirm the value passes through correctly.
Response times#
Monitor action performance:
| Metric | Good | Warning | Bad |
|---|---|---|---|
| Response time | <500ms | 500-2000ms | >2000ms |
| Timeout | - | - | 30s |
Optimization tips#
- Use pagination for large datasets.
- Cache responses when appropriate.
- Minimize payload size.
- Use specific field selection.
Graceful failures#
Design actions to fail gracefully:
{
"success": false,
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Room with ID 123 not found"
}
}
Retry logic#
For transient failures:
- Network timeouts.
- Rate limiting.
- Temporary server errors.
User-friendly messages#
The agent receives error context and can relay it to the tech:
{
"error": "Unable to send email: recipient address invalid"
}
Before going live:
Security#
- [ ] API keys in secret variables.
- [ ] HTTPS endpoints only.
- [ ] No sensitive data in URLs.
- [ ] Proper authentication headers.
Reliability#
- [ ] All parameters tested.
- [ ] Error responses handled.
- [ ] Dependencies verified.
- [ ] Timeouts configured.
Performance#
- [ ] Response times acceptable.
- [ ] Payload sizes optimized.
- [ ] Rate limits considered.
- [ ] Caching implemented.
Documentation#
- [ ] Clear action descriptions.
- [ ] AI instructions complete.
- [ ] Example values provided.
- [ ] Variable purposes documented.
| Issue | Cause | Solution |
|---|---|---|
| Variables not replaced | Syntax error | Check {{var.NAME}} format. |
| Auth fails | Wrong credentials | Update variable value. |
| Timeout | Slow API | Optimize endpoint or increase timeout. |
| Wrong data | Bad JSONPath | Test path selector. |
| No response | CORS or network | Check API accessibility. |
*AVCodex · Your AV expertise. Amplified by AI.*