If your platform expects a different JSON structure, you can define a custom payload template with placeholders. This allows you to transform our default payload format into the exact structure your automation platform requires.
Works with any payload format (flexible platforms):
These platforms accept any valid JSON structure. Use default or custom payloads.
Example templates inspired by these platforms:
These platforms are referenced for descriptive purposes only. We are not affiliated with, endorsed by, or sponsored by these companies.
Example templates are based on public platform documentation and provided as starting points only.
As the AI Short creator, you are responsible for:
We do not guarantee compatibility with any specific third-party platform's API.
Custom templates use placeholder syntax to inject dynamic values into your JSON structure. When an order runs, we replace the placeholders with actual values before sending to your webhook.
You can use these placeholders in your custom template:
{order_id} – Unique UUID for this order{short_id} – Your AI Short's ID{callback_url} – SellerShorts callback endpoint{ts} – Unix timestamp when order was created{inputs.field_name} – Access any input field by its key name{api_version} – API version number (if multi-file enabled){input_files} – Array of uploaded files with metadata (if multi-file enabled)Understanding when to use quotes is critical for valid JSON:
{inputs.field_name}): DON'T wrap in quotes. They render as JSON (objects, arrays, numbers, strings with quotes included).{order_id}, {callback_url}): KEEP the quotes. They render as plain strings without quotes.null – make them optional in your automation.{
"message": {'{inputs.user_message}'},
"order_id": "{'{order_id}'}",
"callback_url": "{'{callback_url}'}",
"timestamp": {'{ts}'}
}Renders as:
{
"message": "Hello, analyze my product",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"callback_url": "https://sellershorts.com/api/orders/callback",
"timestamp": 1736032405
}If you have input fields like product_name, target_keywords, and include_images:
{
"product": {'{inputs.product_name}'},
"keywords": {'{inputs.target_keywords}'},
"images": {'{inputs.include_images}'},
"metadata": {
"order": "{'{order_id}'}"
}
}Input fields that are arrays or objects render as JSON:
{
"channels": {'{inputs.channels}'},
"date_range": {'{inputs.promo_window}'},
"order_id": "{'{order_id}'}"
}Renders as:
{
"channels": ["Email", "Social", "SMS"],
"date_range": {"from": "2025-01-01", "to": "2025-12-31"},
"order_id": "550e8400-e29b-41d4-a716-446655440000"
}When multi-file support is enabled, you can access file metadata:
{
"order_id": "{'{order_id}'}",
"input_files": {'{input_files}'},
"callback_url": "{'{callback_url}'}",
"api_version": "{'{api_version}'}"
}Each file in input_files contains: signed_url, filename, content_type, size_bytes, role, and rank.
Remove nested objects for simpler processing:
{
"text": {'{inputs.user_message}'},
"order": "{'{order_id}'}",
"webhook": "{'{callback_url}'}"
}Merge multiple inputs into a single field:
{
"request": {
"product": {'{inputs.product_name}'},
"keywords": {'{inputs.target_keywords}'},
"platform": {'{inputs.target_platform}'}
},
"order_id": "{'{order_id}'}"
}Change field names to match your platform's requirements:
{
"user_query": {'{inputs.user_message}'},
"job_id": "{'{order_id}'}",
"result_endpoint": "{'{callback_url}'}"
}Start with the default payload format and only add a custom template if your automation platform requires it. Most platforms can work with our default structure, and using it means less maintenance and easier debugging.