{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/sinch/main/json-schema/sinch-create-campaign-request-schema.json", "title": "CreateCampaignRequest", "x-generated": "2026-10-08", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/sinch-us-shortcode-campaigns-api-openapi.yml#/components/schemas/CreateCampaignRequest", "allOf": [ { "$ref": "#/$defs/CampaignRequestBase" }, { "type": "object", "description": "Create a new US Short Code Campaign Draft request.", "properties": { "notes": { "description": "Add some comments to the campaign. This field is optional.", "type": "array", "items": { "type": "string" } } } } ], "$defs": { "BrandId": { "description": "Brand ID created in the Brands API, US_SHORT_CODE_REGISTRY type. This field is required when sc_requested is true. Brand must be provided to the US Short Code Registry to be approved. Brand must exist and not be rejected at submission time (incomplete or pending brands are allowed) Brands approval must be completed in order to complete the campaign registration.", "type": "string" }, "CallbackUrl": { "description": "Callback URL that will be used to notify about campaign order updates. There are four different events that will be sent - CARRIER_ORDER_NOTE - CARRIER_ORDER_STATUS_UPDATE - CAMPAIGN_NOTE - CAMPAIGN_STATUS_UPDATE See callback documentation in submit endpoint section.", "type": "string", "format": "uri" }, "CampaignRequestBase": { "description": "Common properties for create\\/edit US Short Code Campaign requests.", "type": "object", "required": [ "name", "trafficCharge", "scRequested", "customerCare", "contentDefinitions" ], "properties": { "name": { "description": "Campaign name. Max length is 100 characters.", "type": "string" }, "description": { "description": "Campaign description.", "type": "string" }, "trafficCharge": { "$ref": "#/$defs/TrafficCharge" }, "contactEmails": { "$ref": "#/$defs/ContactEmails" }, "complianceEmails": { "$ref": "#/$defs/ComplianceEmails" }, "scRequested": { "$ref": "#/$defs/ScRequested" }, "brandId": { "$ref": "#/$defs/BrandId" }, "shortcode": { "$ref": "#/$defs/Shortcode" }, "carrierIds": { "description": "Carrier IDs. Carrier IDs and names must be retrieved from /carriers endpoint.", "type": "array", "items": { "description": "Carrier ID", "type": "string" } }, "customerCare": { "$ref": "#/$defs/CustomerCare" }, "contentDefinitions": { "description": "You can configure specific flows to fit your needs. You can check the documentation for more information about flows. Each campaign must contain at least one content definition at submission time.", "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/ContentDefinitionRequest" } }, "termsAndConditions": { "$ref": "#/$defs/TermsAndConditions" }, "privacyPolicy": { "$ref": "#/$defs/PrivacyPolicy" }, "isMigrated": { "$ref": "#/$defs/IsMigrated" }, "callbackUrl": { "$ref": "#/$defs/CallbackUrl" }, "attachments": { "description": "Attachment IDs. Attachments must be created using /attachments endpoint, and then link here to the campaign. Attachments are set at project level. If needed, they can be reused by more than one campaign within the same project.", "type": "array", "items": { "description": "Attachment ID", "type": "string" } }, "smsApp": { "$ref": "#/$defs/smsApp" }, "mmsApp": { "$ref": "#/$defs/mmsApp" }, "mmsMoUrl": { "$ref": "#/$defs/mmsMoUrl" }, "mmsDrUrl": { "$ref": "#/$defs/mmsDrUrl" } } }, "ComplianceEmails": { "description": "Compliance emails that will be used to contact compliance team. Mandatory at submission time.", "type": "array", "items": { "type": "string", "format": "email" } }, "ContactEmails": { "description": "Contact emails that will be used to contact about campaign order status. If you plan to set a callback url, please ignore this field", "type": "array", "items": { "type": "string", "format": "email" } }, "ContentDefinitionRequest": { "description": "This is where the client would provide important information about their short code campaign(s) – what the call to action is (how is the short code advertised and how consent is collected), whether it’s a one-time or subscription/recurring campaign, and example messages (example messages of what the brand will be sending once live)", "properties": { "messageType": { "$ref": "#/$defs/MessageTypeEnum" }, "contentType": { "$ref": "#/$defs/ContentTypeEnum" }, "subscription": { "description": "Content definition subscription type.", "enum": [ "ONE_TIME", "SUBSCRIPTION" ], "x-enumDescriptions": { "ONE_TIME": "One time payment", "SUBSCRIPTION": "Subscription payment" }, "format": "enum", "type": "string" }, "messageFlow": { "$ref": "#/$defs/MessageFlow" } }, "type": "object" }, "ContentTypeEnum": { "description": "Content type that will be used in the content definition.", "oneOf": [ { "const": "CHAT", "description": "Chat" }, { "const": "COUPONS", "description": "Coupons", "deprecated": true }, { "const": "ENTERTAINMENT_ALERTS", "description": "Entertainment alerts", "deprecated": true }, { "const": "INFORMATIONAL_ALERTS", "description": "Informational alerts", "deprecated": true }, { "const": "SWEEPSTAKES", "description": "Sweepstakes" }, { "const": "TRIVIA", "description": "Trivia", "deprecated": true }, { "const": "TWO_FACTOR_AUTHENTICATION", "description": "Two factor authentication" }, { "const": "VOTING_POLLING", "description": "Voting polling" }, { "const": "ACCOUNT_NOTIFICATION", "description": "Account Notification" }, { "const": "CHARITABLE_DONATION", "description": "Charity" }, { "const": "CUSTOMER_CARE", "description": "Customer Care" }, { "const": "DELIVERY_NOTIFICATION", "description": "Delivery Notifications" }, { "const": "EMERGENCY", "description": "Emergency" }, { "const": "FINANCIAL", "description": "Financial" }, { "const": "FRAUD_ALERT", "description": "Fraud Alert Messaging" }, { "const": "HEALTHCARE", "description": "Healthcare" }, { "const": "HIGH_EDUCATION", "description": "High Education" }, { "const": "INTERNAL_TESTING", "description": "Internal Testing/Demo" }, { "const": "K12_EDUCATION", "description": "K-12 Education" }, { "const": "MARKETING", "description": "Marketing" }, { "const": "POLITICAL", "description": "Political (Election Campaigns)" }, { "const": "PUBLIC_SERVICE_ANNOUNCEMENT", "description": "Public Service Announcement" }, { "const": "SECURITY_ALERT", "description": "Security Alert" }, { "const": "SHOPPING_CART_REMINDER", "description": "Shopping Cart Reminder" } ], "type": "string" }, "CustomerCare": { "description": "Customer care info that end customers will see. Mandatory at submission time.", "properties": { "optOutKeywords": { "description": "These are keywords end users can use to unsubscribe from the short program. Acceptable Opt-out keywords are STOP, END, CANCEL, UNSUBSCRIBE, QUIT, REVOKE, OPTOUT, OPT-OUT. Max length is 100 characters.", "type": "string" }, "optOutMtText": { "description": "The outgoing message that the brand needs to send to acknowledge the opt out and informing subscribers that they will no longer receive further messages. This responsibility generally falls on the brand/client (exceptions on 2FA/OTP campaigns as they are not recurring programs)", "type": "string" }, "helpMtText": { "description": "The help message is a message sent in response to when end users are requesting help by testing the keyword HELP. This message should include a phone number, email address or URL leading to the support contact page.", "type": "string" }, "email": { "description": "Customer care email that will be used to contact customer care.", "type": "string", "format": "email" }, "website": { "description": "Customer care website that will be used to contact customer care.", "type": "string", "format": "uri" }, "phoneNumber": { "description": "Customer care phone number that will be used to contact customer care.", "type": "string", "format": "phone" } }, "type": "object" }, "IsMigrated": { "description": "Indicates the campaign is migrated from another provided or another customer Sinch account. It is required to submit the campaign details in dashboard when it’s a migration.", "type": "boolean" }, "MessageFlow": { "description": "Message flow that will be used in the content definition. Contains the call to action, opt in and sample alert.", "properties": { "callToAction": { "description": "Call to action that will be used in the content definition.", "type": "string" }, "optIn": { "description": "Opt-in message that will be used in the content definition.", "type": "string" }, "sampleAlert": { "description": "Sample alert that will be used in the content definition.", "type": "string" } }, "type": "object" }, "MessageTypeEnum": { "description": "Message type that will be used in the content definition.", "enum": [ "SMS", "MMS_VIDEO", "MMS_AUDIO", "MMS_IMAGE" ], "x-enumDescriptions": { "SMS": "SMS", "MMS_VIDEO": "MMS Video", "MMS_AUDIO": "MMS Audio", "MMS_IMAGE": "MMS Image" }, "format": "enum", "type": "string" }, "PrivacyPolicy": { "description": "Provide the URL to your company’s Privacy Policy, which outlines how you collect, use, and protect customers' personal information. If you do not have a URL, please enter the full text of your Privacy Policy. Mandatory at submission time.", "properties": { "text": { "description": "Privacy policy text.", "type": "string" }, "url": { "description": "Privacy policy URL", "type": "string", "format": "uri" } }, "type": "object" }, "ScRequested": { "description": "Customer needs Sinch to lease a short code for them. When sc_requested is true, customers need to provide an existing brand ID, not rejected.", "type": "boolean" }, "Shortcode": { "description": "Short codes configured for the campaign. Short code must be provided when sc_requested is false. There are two options (1) if customers have their own short code (sc_requested=true), we would ask that they provide the short code number in this field and also attach a copy of their latest short code receipt upon submitting the campaign. (2) If customers have elected that Sinch lease the code (sc_requested=false), this field should be blank, and Sinch will fill it once short code has been procured.", "type": "string" }, "TermsAndConditions": { "description": "Provide the URL to your company’s Terms and Conditions, which explain the rules and guidelines for using your services. If you do not have a URL, please provide the full text of your Terms and Conditions. Mandatory at submission time.", "properties": { "text": { "description": "Terms and conditions text.", "type": "string" }, "url": { "description": "Terms and conditions URL", "type": "string", "format": "uri" } }, "type": "object" }, "TrafficCharge": { "description": "Campaign traffic charge type.", "enum": [ "STANDARD", "FREE_TO_END_USER" ], "x-enumDescriptions": { "STANDARD": "Standard rates apply to send and receive for end users. Sinch customers will be charged for MT/MO messages.", "FREE_TO_END_USER": "Sinch customers will be charged at a higher MT/MO rate while end users will not be charged." }, "format": "enum", "type": "string" }, "mmsApp": { "description": "The MMS routing profile app", "type": "string" }, "mmsDrUrl": { "description": "Location where DR messages will be delivered. A specific URL for Delivery Receipt at the shortcode level. This parameter is optional and allows for overriding the account-level DR URL. If a value is provided, all DR notifications for this shortcode will be sent to the specified URL. If it is not provided, notifications will continue to be sent to the default URL configured at the account level.", "type": "string" }, "mmsMoUrl": { "description": "Location where MO messages will be delivered. A specific URL for Mobile Originated at the shortcode level. This parameter is optional and allows for overriding the account-level MO URL. If a value is provided, all MO notifications for this shortcode will be sent to the specified URL. If it is not provided, notifications will continue to be sent to the default URL configured at the account level.", "type": "string" }, "smsApp": { "description": "The SMS routing profile app", "type": "string" } } }