Agency Campaign Creation API URI https://api.versal.one/ POST /agency/createCampaign Description This API allows agencies to create a campaign by specifying a name, schedule type, and other campaign details. The client must provide a valid uuid as a query parameter. Only accepted variables will be processed, and all user-defined variables must match the expected format. Request Headers Header Type Description Constraints Authorization String Bearer token for authentication and authorization. Required. Must be in the format Bearer [token] . Query Parameters Parameter Type Description Constraints uuid String Unique identifier for the agency. Required. Must be a valid UUID format. Request Body Parameters Field Type Description Constraints name String Campaign name. Required. Must be unique. template_payload Object Template details for the campaign. Required. Must include user-defined variables matching body_variable and header_variable . schedule_type String Type of schedule for the campaign. Required. Allowed values: "once" , "recurring" . days Object Days and times for a recurring schedule. Required for "recurring" schedules. Must include days (e.g., "monday" ) with an array of times. schedule String Date and time for the campaign. Required. Must follow a valid datetime format. Response Codes Status Code Description 201 Campaign successfully created. 400 Bad request. Missing required fields, invalid schedule_type , or user-defined variables mismatch. 403 Forbidden. Invalid HMAC signature. 404 No company found with the provided uuid . 409 Conflict. Campaign name already exists. 500 Internal server error while saving the campaign. Example Requests Request (Carousel Template): POST /53d1bcd3-aaf0-45e1-9298-5395b6a27b61/agency/createCampaign Authorization: Bearer 5395b6a27b61 { "name": "temp3", "template_payload": { "cards": [ { "card_image_url": "https://example.com/image1.jpg", "card_body_variables": [] }, { "card_image_url": "https://example.com/image2.jpg", "card_body_variables": [] } ], "image_url": "", "group_name": "test_group", "body_variable": [], "template_name": "carousel_milk", "header_variable": [] }, "schedule_type": "recurring", "days": { "monday": [ "10:00" ], "wednesday": [ "10:00" ] }, "schedule": "2025-01-15 14:50" } Request (Header and Body Variables): POST /53d1bcd3-aaf0-45e1-9298-5395b6a27b61/agency/createCampaign Authorization: Bearer 5395b6a27b61 { "name": "temp3", "template_payload": { "image_url": "", "group_name": "Team Testing", "body_variable": [ "world" ], "template_name": "test_template_1", "header_variable": [ "hello" ] }, "schedule_type": "once", "schedule": "2025-01-15 14:50" } Response (Created - 201): { "success": true, "message": "Campaign successfully created" } Response (Missing Variables - 400): { "success": false, "message": "Name and Template payload are required for the campaign creation" } Response (Invalid Schedule Type - 400): { "success": false, "message": "Schedule type should include only 'once' and 'recurring'." } Response (Days Required for Recurring - 400): { "success": false, "message": "Days and Times are required for a recurring schedule." } Response (Conflict - 409): { "success": false, "message": "Name already exists" } Response (Internal Server Error - 500): { "success": false, "message": "An unexpected error occurred while saving the campaign. Please try again later." } Notes Authentication : A valid authorization token is required for all requests. Validation : All user-defined variables must exactly match the template's body_variable and header_variable . Recurring Schedules : days and times must be included for recurring schedules; otherwise, the request will fail. Conflict Handling : Campaign names must be unique.