{"id":593,"date":"2026-07-09T02:10:59","date_gmt":"2026-07-09T02:10:59","guid":{"rendered":"https:\/\/smppcenter.com\/journal\/?p=593"},"modified":"2026-07-09T02:11:01","modified_gmt":"2026-07-09T02:11:01","slug":"api-signatures","status":"publish","type":"post","link":"https:\/\/smppcenter.com\/journal\/api-signatures\/","title":{"rendered":"API Signatures: Let Your Customers Keep Their API While You Host the SMS Platform"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Every <a href=\"https:\/\/www.smsgatewaycenter.com\/\">SMS gateway<\/a> owner knows the hardest part of winning a new enterprise customer is not pricing. It is integration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your prospect already has PHP scripts, ERP connectors, CRM workflows, or middleware talking to another vendor\u2019s HTTP API. Those systems use fixed parameter names like <code>to<\/code>, <code>text<\/code>, <code>username<\/code>, or <code>send_to<\/code>. In many cases, the customer <strong>cannot change the request body<\/strong> at all. They can only point traffic to a new base URL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is exactly why we built <strong>API Signatures<\/strong> in SMPP Center.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As a <strong>license holder<\/strong>, you configure this from <strong>your own platform admin panel<\/strong> (not from smppcenter.com). Your customers keep sending the same parameters they always have. Your platform translates those requests into the standard SMPPCenter send format behind the scenes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"http:\/\/smppcenter.com\/journal\/wp-content\/uploads\/2026\/07\/api-signature-smppcenter-1024x683.webp\" alt=\"API Signatures\" class=\"wp-image-594\" srcset=\"https:\/\/smppcenter.com\/journal\/wp-content\/uploads\/2026\/07\/api-signature-smppcenter-1024x683.webp 1024w, https:\/\/smppcenter.com\/journal\/wp-content\/uploads\/2026\/07\/api-signature-smppcenter-300x200.webp 300w, https:\/\/smppcenter.com\/journal\/wp-content\/uploads\/2026\/07\/api-signature-smppcenter-768x512.webp 768w, https:\/\/smppcenter.com\/journal\/wp-content\/uploads\/2026\/07\/api-signature-smppcenter.webp 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What is an API Signature?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An API Signature is a configurable translation layer between your customer\u2019s HTTP API request and your SMPPCenter SMS engine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You define:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A <strong>display name<\/strong> (for your operations team)<\/li>\n\n\n\n<li>A <strong>URL key<\/strong> (the path segment in the endpoint)<\/li>\n\n\n\n<li>A <strong>customer account<\/strong> (one user, or all users on your platform)<\/li>\n\n\n\n<li>A <strong>parameter map<\/strong> (customer field names \u2192 system fields like login, password, mobile, message, sender ID, DLT fields)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">After setup, the customer calls a dedicated endpoint on <strong>your licensed domain<\/strong>, for example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;your-domain.com\/SMSApi\/signature\/flash49<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">They send <code>username<\/code>, <code>password<\/code>, <code>to<\/code>, <code>text<\/code>, and <code>from<\/code>. Your platform receives it, maps it internally, and processes the SMS like any normal send request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supported methods: <strong>GET<\/strong> and <strong>POST<\/strong> (query string or <code>application\/x-www-form-urlencoded<\/code> form body).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Where license holders manage this<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you run a licensed SMPPCenter installation, open your <strong>admin panel<\/strong> and go to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Settings \u2192 API Signatures<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From there you can:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Action<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td><strong>List \/ Read<\/strong><\/td><td>View all signatures, URL keys, customer scope, status, and full endpoint URLs<\/td><\/tr><tr><td><strong>Create<\/strong><\/td><td>Add a new signature using the two-step wizard<\/td><\/tr><tr><td><strong>Update<\/strong><\/td><td>Edit mappings without asking the customer to change their integration (if the URL key stays the same)<\/td><\/tr><tr><td><strong>Delete<\/strong><\/td><td>Remove a signature permanently<\/td><\/tr><tr><td><strong>Enable \/ Disable<\/strong><\/td><td>Pause traffic without losing configuration<\/td><\/tr><tr><td><strong>Refresh cache<\/strong><\/td><td>Push changes live to the SMS API server immediately<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Access is controlled through admin roles under the <strong>Settings<\/strong> category, feature <strong>API Signatures<\/strong> (Create, Read, Update, Delete). Assign permissions only to trusted operations or technical admins on your team.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Full in-panel documentation is also available under <strong>Admin \u2192 Documentation \u2192 Settings \u2192 API Signatures<\/strong> on your licensed installation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why this feature matters for your business<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Faster customer onboarding<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When a prospect says <em>\u201cWe can only change the hostname, not our code\u201d<\/em>, you no longer lose the deal. You absorb their API shape on your side and go live in hours instead of weeks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Lower integration cost for you and your customer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No custom PHP patches per customer. No asking their developer to rewrite Postman collections, Java services, or billing system connectors. You configure mappings in the admin UI once and share one URL.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. White-label and reseller advantage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Resellers can offer an API that <strong>looks and behaves like the customer\u2019s previous provider<\/strong> while routing through your SMPPCenter cluster. That makes competitive takeaways smoother and reduces switching friction.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Multiple formats on one platform<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Customer A sends <code>to<\/code> \/ <code>text<\/code>. Customer B sends <code>send_to<\/code> \/ <code>msg_type<\/code>. Customer C still uses Flash49-style DLT field names. Each gets their own signature URL and mapping. One platform, many compatibility layers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Safe rollout and maintenance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a signature <strong>disabled<\/strong>, test it, then enable for production.<\/li>\n\n\n\n<li>Toggle off during maintenance without deleting configuration.<\/li>\n\n\n\n<li>Use <strong>Refresh cache<\/strong> after changes so the SMS API server picks them up immediately.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Real-world scenarios license holders solve<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Scenario A: Customer wants custom parameter names<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A customer sends:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>username, password, to, text, from<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">instead of the default:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>userid, password, mobile, msg, senderid<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Solution:<\/strong> Create a signature, map each customer parameter to the matching system field, share the signature endpoint URL. Done.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scenario B: Locked to another vendor\u2019s API format<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Large enterprises often have CRM, ERP, or middleware where the HTTP body format is fixed. Middleware teams refuse to change parameter names. If they can only update the <strong>base URL<\/strong>, API Signatures is the right tool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You become compatible without touching their codebase.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scenario C: Migrating from Flash49, GS Send, or similar gateways<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Built-in starter templates help you move faster:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Template<\/th><th>Best for<\/th><th>Example customer parameters<\/th><\/tr><\/thead><tbody><tr><td><strong>Standard SMS<\/strong><\/td><td>Close to default SMPPCenter names<\/td><td><code>userid<\/code>, <code>password<\/code>, <code>mobile<\/code>, <code>msg<\/code>, <code>senderid<\/code><\/td><\/tr><tr><td><strong>Flash49<\/strong><\/td><td>Flash49-style gateways<\/td><td><code>username<\/code>, <code>to<\/code>, <code>text<\/code>, <code>from<\/code>, <code>unicode<\/code>, DLT fields<\/td><\/tr><tr><td><strong>GS Send<\/strong><\/td><td>GS Send compatible APIs<\/td><td><code>userid<\/code>, <code>send_to<\/code>, <code>msg_type<\/code>, optional <code>method=SendMessage<\/code><\/td><\/tr><tr><td><strong>Blank<\/strong><\/td><td>Fully custom vendor<\/td><td>Map every field manually<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Pick the closest template, adjust what differs on your platform, test, and share the URL.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scenario D: One shared format for all accounts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Set <strong>Customer account<\/strong> to <strong>All users<\/strong> when the same external API format should work for any valid login. Useful for a public compatibility endpoint or a legacy product URL you want to keep alive.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How the wizard works (Create \/ Update)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1 \u2014 Basic<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Display name:<\/strong> Internal label (e.g. <em>Acme Corp Legacy API<\/em>)<\/li>\n\n\n\n<li><strong>URL key:<\/strong> Unique slug in the endpoint path (lowercase letters, numbers, underscore)<\/li>\n\n\n\n<li><strong>Customer account:<\/strong> One user, or <strong>All users (global)<\/strong><\/li>\n\n\n\n<li><strong>Active:<\/strong> On by default; disable for testing<\/li>\n\n\n\n<li><strong>Start from template:<\/strong> Blank, Standard SMS, Flash49, or GS Send<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2 \u2014 Parameters<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Map <strong>system fields<\/strong> to <strong>customer parameter names<\/strong>. Required mappings:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Login \/ Username<\/li>\n\n\n\n<li>Password<\/li>\n\n\n\n<li>Mobile number<\/li>\n\n\n\n<li>Message text<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Optional but commonly mapped:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sender ID<\/li>\n\n\n\n<li>Message type (text, unicode, flash)<\/li>\n\n\n\n<li>DLT Entity ID \/ Template ID (India compliance)<\/li>\n\n\n\n<li>Campaign \/ reference<\/li>\n\n\n\n<li>Response format (plain, json, xml)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Transforms<\/strong> handle value differences, for example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Customer sends <code>unicode=true<\/code> instead of <code>msgType=unicode<\/code><\/li>\n\n\n\n<li>GS-style <code>text<\/code> \/ <code>unicode_text<\/code> message types<\/li>\n\n\n\n<li>Response format normalization (<code>format=text<\/code> \u2192 plain)<\/li>\n\n\n\n<li>Lowercase normalization when needed<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Per-field options include <strong>Decode HTML entities<\/strong> and <strong>Use default sender<\/strong> when the customer omits sender ID. <strong>Show advanced fields<\/strong> exposes schedule time, contact group, telemarketer ID, and similar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Live URL preview<\/strong> builds a sample query string with placeholders so you can verify mapping before save (no real credentials exposed).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Recommended workflow for your operations team<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Collect a sample request<\/strong> from the customer (full URL, method, query\/body parameters).<\/li>\n\n\n\n<li><strong>Identify<\/strong> which parameters carry login, password, mobile, message, sender, and DLT data.<\/li>\n\n\n\n<li><strong>Create a signature<\/strong> in your admin \u2014 pick the closest template, then adjust mappings.<\/li>\n\n\n\n<li><strong>Test<\/strong> with the live URL preview and a sandbox or test user account.<\/li>\n\n\n\n<li><strong>Share the endpoint URL<\/strong> with the customer. On their side, usually only the host\/path changes.<\/li>\n\n\n\n<li><strong>Save<\/strong>, confirm cache refresh succeeded, and monitor message logs for the test user.<\/li>\n\n\n\n<li><strong>Enable for production<\/strong> when satisfied.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Operational benefits you get as a license holder<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No per-customer code deploys<\/strong> \u2014 configuration lives in your admin UI and database.<\/li>\n\n\n\n<li><strong>Audit-friendly<\/strong> \u2014 each signature has a name, scope, and stored configuration.<\/li>\n\n\n\n<li><strong>Role-based security<\/strong> \u2014 CRUD controlled through admin roles.<\/li>\n\n\n\n<li><strong>Multiple signatures per cluster<\/strong> \u2014 different URL keys for different segments or legacy products.<\/li>\n\n\n\n<li><strong>DLT-ready<\/strong> \u2014 map entity ID, template ID, and telemarketer fields when the customer\u2019s vendor uses different names.<\/li>\n\n\n\n<li><strong>Instant cache refresh<\/strong> \u2014 click <strong>Refresh cache<\/strong> on the list page after bulk changes; if refresh fails, changes propagate within about 15 minutes or after ApiServer restart.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">A note on changing live signatures<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you <strong>edit mappings<\/strong> but keep the same URL key, the customer does not need to change anything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you <strong>change the URL key<\/strong> after go-live, the endpoint path changes. Communicate the new URL to the customer before cutover.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>Enable \/ Disable<\/strong> for soft pauses. Use <strong>Delete<\/strong> only when you are sure the integration path is retired.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Who should use API Signatures?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">API Signatures is built for <strong>SMPP Center license holders<\/strong> who:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Operate their own branded SMS platform admin<\/li>\n\n\n\n<li>Onboard enterprise customers with existing HTTP integrations<\/li>\n\n\n\n<li>Compete against gateways where customers are \u201clocked in\u201d to a parameter format<\/li>\n\n\n\n<li>Want reseller-friendly, white-label API compatibility<\/li>\n\n\n\n<li>Need DLT field mapping without rewriting customer systems<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">It complements \u2014 not replaces \u2014 your standard SMPPCenter HTTP API and SMPP connections. Use the default API for new integrations; use API Signatures when compatibility is the sales blocker.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Get started on your licensed platform<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log in to <strong>your SMPPCenter admin panel<\/strong> (your domain, your installation).<\/li>\n\n\n\n<li>Go to <strong>Settings \u2192 API Signatures<\/strong>.<\/li>\n\n\n\n<li>Click <strong>Add<\/strong>, choose a template, map parameters, and test.<\/li>\n\n\n\n<li>Share the signature URL with your customer.<\/li>\n\n\n\n<li>Click <strong>Refresh cache<\/strong> and monitor your message logs.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For step-by-step reference, open <strong>Admin \u2192 Documentation \u2192 Settings \u2192 API Signatures<\/strong> on your licensed installation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>About SMPP Center:<\/strong> We build enterprise-grade A2P SMS software for license holders, resellers, and operators who need robust, scalable messaging platforms. <a href=\"https:\/\/smppcenter.com\/journal\/\">Explore more on the SMPP Center Journal<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every SMS gateway owner knows the hardest part of winning a new enterprise customer is not pricing. It is integration. Your prospect already has PHP scripts, ERP connectors, CRM workflows, or middleware talking to another vendor\u2019s HTTP API. Those systems use fixed parameter names like to, text, username, or send_to. In many cases, the customer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":594,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[617,606,607,615,614,610,612,164,611,613,3,14,15,2,605,616,608,609],"class_list":["post-593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","tag-api-compatibility-layer","tag-api-signatures","tag-custom-api-parameters","tag-customer-onboarding","tag-dlt-api-fields","tag-flash49-api","tag-gs-send-api","tag-http-sms-api","tag-license-holder-admin","tag-parameter-mapping","tag-smpp-center","tag-smpp-client","tag-smpp-server","tag-smpp-software","tag-sms-api-integration","tag-sms-platform-reseller","tag-vendor-migration","tag-white-label-sms-gateway"],"_links":{"self":[{"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/posts\/593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/comments?post=593"}],"version-history":[{"count":0,"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/posts\/593\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/media\/594"}],"wp:attachment":[{"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/media?parent=593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/categories?post=593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smppcenter.com\/journal\/wp-json\/wp\/v2\/tags?post=593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}