{"info":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","description":"<html><head></head><body><h2 id=\"getting-started-with-the-nomi-api\">Getting Started with the NOMI API</h2>\n<p>Welcome to the NOMI API! This section will guide you through the initial steps to use our API, ensuring you have everything you need to start sending and managing SMS messages through your applications.</p>\n<h3 id=\"generating-your-api-key\">Generating Your API Key</h3>\n<p>To authenticate with the NOMI API, you'll need an API key. Follow these steps to generate one:</p>\n<ol>\n<li>Log in to your NOMI user portal.</li>\n<li>Go to the <code>API keys</code> section.</li>\n<li>Click on the button to generate a new API key.</li>\n</ol>\n<p>Once generated, your API key will be your gateway to integrating with the NOMI API.</p>\n<h3 id=\"using-your-api-key\">Using Your API Key</h3>\n<p>To make API calls, append your API key to the request URL as a parameter. Here’s how you can do it:</p>\n<p><a href=\"https://api.withnomi.ai/account/balance?apikey=your_api_key_here\">https://api.withnomi.ai/account/balance?apikey=your_api_key_here</a></p>\n<h3 id=\"authentication-and-access\">Authentication and Access</h3>\n<p>Keep your API key secure to prevent unauthorized access. If you make an API call without a valid API key, or if the key is incorrect, the API will return a <code>401 Unauthorized</code> status code. This indicates that the request has not been completed due to invalid authentication credentials.</p>\n<h3 id=\"summary\">Summary</h3>\n<p>With your API key set up and understood how to use it within your API calls, you are now ready to explore the full potential of the NOMI API. This will allow you to seamlessly integrate SMS messaging capabilities into your applications and services.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"40983365","collectionId":"5d30bbab-50ae-4e83-9588-348df9e3f32d","publishedId":"2sBXcDHMyM","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-02-19T00:21:40.000Z"},"item":[{"name":"Account","item":[{"name":"Get Account Balance","id":"49b8cead-98d3-4ec8-ad35-81ac347c723f","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"https://api.withnomi.ai/account/balance","description":"<p>This endpoint makes an HTTP GET request to retrieve the account balance from the specified URL. The response will be in JSON format and will include a \"success\" indicator, the \"balance\" data, and an optional \"message\" field.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["account","balance"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"b1247862-709b-49b5-939f-c817628e7525","name":"Successful Response","originalRequest":{"method":"GET","header":[],"url":"https://api.withnomi.ai/account/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 31 Mar 2024 22:51:36 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=xOWD2903xqPhKAL3mfjb3wu4w2cnluMAY8klX6BnFbQDi5HfNNtAFdjCmHlFQMGAzEMI2%2B9WU%2FlbRml6Ce2nlAF7dJLpvwiL%2BsPl%2BLrmuiAGygwSJwzWf91fcbK0ig%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d3e7ab188ee21b-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"balance\": 0\n    },\n    \"message\": \"Account balance retrieved\"\n}"}],"_postman_id":"49b8cead-98d3-4ec8-ad35-81ac347c723f"}],"id":"09f1e9b6-07b3-4630-8c71-ecce3a8ab849","_postman_id":"09f1e9b6-07b3-4630-8c71-ecce3a8ab849","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}}},{"name":"Campaigns","item":[{"name":"Lookup Campaigns","id":"61776690-581b-4152-9e2e-3cd59ee8d980","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"campaign_id","value":"100","description":"<p>(Optional) Id of campaign</p>\n","type":"text"},{"key":"name","value":"product","description":"<p>(Optional) Text to search for in campaign name</p>\n","type":"text"},{"key":"status","value":"complete","description":"<p>(Optional) Campaign status, must be 'draft', 'pending', 'failed', or 'complete'</p>\n","type":"text"},{"key":"page","value":"1","description":"<p>(Optional) Page number for results (Default 1)</p>\n","type":"text"},{"key":"amount","value":"100","description":"<p>(Optional) Amount of results per page (Default 10, max 100)</p>\n","type":"text"}]},"url":"https://api.withnomi.ai/campaigns/lookup","description":"<p>This endpoint allows you to search for campaigns using various optional parameters. You can search by campaign ID, name, status, and paginate the results. The amount parameter allows you to control the number of results per page. The response will include details of the campaigns matching the search criteria.</p>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<ul>\n<li><p><code>campaign_id</code> (Optional) - Id of the campaign</p>\n</li>\n<li><p><code>name</code> (Optional) - Text to search for in campaign name</p>\n</li>\n<li><p><code>status</code> (Optional) - Campaign status, must be 'draft', 'pending', 'failed', or 'complete'</p>\n</li>\n<li><p><code>page</code> (Optional) - Page number for results (Default 1)</p>\n</li>\n<li><p><code>amount</code> (Optional) - Amount of results per page (Default 10, max 100)</p>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<ul>\n<li>Status: 200</li>\n<li>Content-Type: application/json</li>\n<li><code>success</code> - Indicates if the request was successful</li>\n<li><code>data</code> - Object containing details of the campaigns<ul>\n<li><code>current_page</code> - Current page number of the results</li>\n<li><code>per_page</code> - Number of results per page</li>\n<li><code>total_campaigns</code> - Total number of campaigns</li>\n<li><code>campaigns</code> - Array of campaign objects containing details such as campaign_id, name, status, number, url, message, media, revenue, conversions, sent, filtered, unsubscribed, send_at, sent_at, completed_at, failed, delivered, updated_at, created_at</li>\n</ul>\n</li>\n<li><code>message</code> - Additional information or error message</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["campaigns","lookup"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"136141f0-5dab-4d9f-b662-a3a8ec8e6b3c","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"campaign_id","value":"100","description":"(Optional) Id of campaign","type":"text"},{"key":"name","value":"product","description":"(Optional) Text to search for in campaign name","type":"text"},{"key":"status","value":"complete","description":"(Optional) Campaign status, must be 'draft', 'pending', 'failed', or 'complete'","type":"text"},{"key":"page","value":"1","description":"(Optional) Page number for results (Default 1)","type":"text"},{"key":"amount","value":"100","description":"(Optional) Amount of results per page (Default 10, max 100)","type":"text"}]},"url":"https://api.withnomi.ai/campaigns/lookup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 31 Mar 2024 23:59:50 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=2xQPGalVXOzr6Yn577s4q938r%2B6%2BX%2FVr9I0r6qZVgriiAKQgCtF6KLW6w4IE%2BU4faZOgcZxbUBqKoVvdZsioaorx1%2BCz%2FxZtvgTXRiH5z3b8uDieZysVTFaS0yFzCQ%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d44b9eced810b6-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"current_page\": 1,\n        \"per_page\": 100,\n        \"total_campaigns\": 1,\n        \"campaigns\": [\n            {\n                \"campaign_id\": 100,\n                \"name\": \"The Best Product for Home Defense\",\n                \"status\": \"complete\",\n                \"number\": \"8888888888\",\n                \"url\": \"https://mysite.com/?sub=[code]\",\n                \"message\": \"My Site: NEW Product for Home Defense [name]!\\n\\nProtection In The Palm of Your Hand:\\n\\n[link]\\n\\nReply STOP 2 End.\",\n                \"media\": \"\",\n                \"revenue\": 1000,\n                \"conversions\": 22,\n                \"sent\": 67457,\n                \"filtered\": 2125,\n                \"unsubscribed\": 171,\n                \"send_at\": \"2024-03-22 17:18:00\",\n                \"sent_at\": \"2024-03-22 17:18:02\",\n                \"completed_at\": \"2024-03-22 18:06:44\",\n                \"failed\": false,\n                \"delivered\": 64946,\n                \"updated_at\": \"2024-03-29T19:48:43.000000Z\",\n                \"created_at\": \"2024-03-22T17:18:00.000000Z\"\n            }\n        ]\n    },\n    \"message\": \"Campaign lookup successful\"\n}"}],"_postman_id":"61776690-581b-4152-9e2e-3cd59ee8d980"}],"id":"7b2353c9-1dac-479b-bac4-44183065d379","_postman_id":"7b2353c9-1dac-479b-bac4-44183065d379","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}}},{"name":"Contacts","item":[{"name":"Create a Contact","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","pm.test(\"Response is an object with success property\", function () {","    pm.expect(pm.response.json()).to.be.an('object').that.has.property('success');","});","","pm.test(\"Data object contains contact_id, phone, and tags properties\", function () {","    var data = pm.response.json().data;","    pm.expect(data).to.be.an('object').that.includes.all.keys('contact_id', 'phone', 'tags');","});"],"type":"text/javascript","packages":{},"requests":{},"id":"6cbd3c84-31ca-4948-be95-342447d1dc8c"}}],"id":"2b6920f4-5a8a-4503-90c8-ddcb1f2afa16","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"first_name","value":"John","description":"<p>(Optional) First name of contact</p>\n","type":"text"},{"key":"last_name","value":"Doe","description":"<p>(Optional) Last name of contact</p>\n","type":"text"},{"key":"email","value":"john.doe@example.com","description":"<p>(Optional) Email address of contact</p>\n","type":"text"},{"key":"phone","value":"5555555555","description":"<p>(Required) Phone number of contact</p>\n","type":"text"},{"key":"tags","value":"buyer","description":"<p>(Optional) Apply new tags to the contact, for multiple tags seperate by comma</p>\n","type":"text"},{"key":"remove_tags","value":"lead","description":"<p>(Optional) Only if contact already exists and update is true, for multiple tags seperate by comma</p>\n","type":"text"},{"key":"custom_variables[order_id]","value":"ORD-12345","description":"<p>(Optional) Custom variable key-value pairs (e.g., order_id, tracking_number)</p>\n","type":"text","disabled":true},{"key":"custom_variables[tracking_number]","value":"TRK-67890","description":"<p>(Optional) Custom variable key-value pairs</p>\n","type":"text","disabled":true},{"key":"update","value":"true","description":"<p>(Optional) Update the contact if they already exist (Default True)</p>\n","type":"text"},{"key":"sms_consent[status]","value":"subscribed","description":"<p>(Optional) SMS consent status: subscribed, unsubscribed, pending, or transactional_only. Only applied to NEW contacts, ignored on update.</p>\n","type":"text","disabled":true},{"key":"sms_consent[timestamp]","value":"2026-01-15T10:30:00Z","description":"<p>(Required with sms_consent) ISO 8601 date when consent was given</p>\n","type":"text","disabled":true},{"key":"sms_consent[source]","value":"webform","description":"<p>(Required with sms_consent) Source of consent: checkout, webform, keyword, api, manual, stop, unsubscribe_link, spam_report</p>\n","type":"text","disabled":true},{"key":"sms_consent[consent_text]","value":"I agree to receive SMS marketing messages.","description":"<p>(Required for SMS marketing opt-in) The consent language shown to the user</p>\n","type":"text","disabled":true},{"key":"sms_consent[ip_address]","value":"192.168.1.1","description":"<p>(Optional) IP address of the user when consent was given</p>\n","type":"text","disabled":true},{"key":"sms_consent[user_agent]","value":"Mozilla/5.0","description":"<p>(Optional) User agent of the browser when consent was given</p>\n","type":"text","disabled":true},{"key":"email_consent[status]","value":"subscribed","description":"<p>(Optional) Email consent status: subscribed, unsubscribed, pending, or transactional_only. Only applied to NEW contacts, ignored on update.</p>\n","type":"text","disabled":true},{"key":"email_consent[timestamp]","value":"2026-01-15T10:30:00Z","description":"<p>(Required with email_consent) ISO 8601 date when consent was given</p>\n","type":"text","disabled":true},{"key":"email_consent[source]","value":"webform","description":"<p>(Required with email_consent) Source of consent: checkout, webform, keyword, api, manual, stop, unsubscribe_link, spam_report</p>\n","type":"text","disabled":true},{"key":"email_consent[ip_address]","value":"192.168.1.1","description":"<p>(Optional) IP address of the user when consent was given</p>\n","type":"text","disabled":true},{"key":"email_consent[user_agent]","value":"Mozilla/5.0","description":"<p>(Optional) User agent of the browser when consent was given</p>\n","type":"text","disabled":true}]},"url":"https://api.withnomi.ai/contacts/create","description":"<h3 id=\"create-contact\">Create Contact</h3>\n<p>This endpoint allows you to create a new contact in the system.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>first_name</code> (optional): First name of the contact.</li>\n<li><code>last_name</code> (optional): Last name of the contact.</li>\n<li><code>email</code> (optional): Email address of the contact.</li>\n<li><code>phone</code> (required): Phone number of the contact.</li>\n<li><code>tags</code> (optional): Apply new tags to the contact. For multiple tags, separate by comma.</li>\n<li><code>remove_tags</code> (optional): Only if contact already exists and update is true. For multiple tags, seperate by comma.</li>\n<li><code>custom_variables</code> (optional): Custom variable key-value pairs (e.g., <code>custom_variables[order_id]=ORD-12345</code>). Use these to store dynamic data like order IDs, tracking numbers, etc. that can be used in message templates with <code>[order_id]</code>, <code>[tracking_number]</code> tokens.</li>\n<li><code>update</code> (optional): Update the contact if they already exist. Default is True.</li>\n</ul>\n<h4 id=\"consent-fields-optional-new-contacts-only\">Consent Fields (Optional, New Contacts Only)</h4>\n<p>Consent fields are only applied when creating a <strong>new</strong> contact. They are ignored on update/duplicate.</p>\n<ul>\n<li><code>sms_consent</code> (optional): Object containing SMS consent data.<ul>\n<li><code>sms_consent[status]</code> (required with sms_consent): One of <code>subscribed</code>, <code>unsubscribed</code>, <code>pending</code>, <code>transactional_only</code>.</li>\n<li><code>sms_consent[timestamp]</code> (required with sms_consent): ISO 8601 date of when consent was given.</li>\n<li><code>sms_consent[source]</code> (required with sms_consent): One of <code>checkout</code>, <code>webform</code>, <code>keyword</code>, <code>api</code>, <code>manual</code>, <code>stop</code>, <code>unsubscribe_link</code>, <code>spam_report</code>.</li>\n<li><code>sms_consent[consent_text]</code> (required for SMS marketing opt-in): The consent language shown to the user.</li>\n<li><code>sms_consent[ip_address]</code> (optional): IP address when consent was given.</li>\n<li><code>sms_consent[user_agent]</code> (optional): User agent when consent was given.</li>\n</ul>\n</li>\n<li><code>email_consent</code> (optional): Object containing email consent data.<ul>\n<li><code>email_consent[status]</code> (required with email_consent): One of <code>subscribed</code>, <code>unsubscribed</code>, <code>pending</code>, <code>transactional_only</code>.</li>\n<li><code>email_consent[timestamp]</code> (required with email_consent): ISO 8601 date of when consent was given.</li>\n<li><code>email_consent[source]</code> (required with email_consent): One of <code>checkout</code>, <code>webform</code>, <code>keyword</code>, <code>api</code>, <code>manual</code>, <code>stop</code>, <code>unsubscribe_link</code>, <code>spam_report</code>.</li>\n<li><code>email_consent[ip_address]</code> (optional): IP address when consent was given.</li>\n<li><code>email_consent[user_agent]</code> (optional): User agent when consent was given.</li>\n</ul>\n</li>\n</ul>\n<p>If no consent information is provided, the contact is treated as <strong>transactional-only</strong> (can receive transactional messages but not marketing).</p>\n<h4 id=\"response\">Response</h4>\n<p>Upon successful creation, the response will include:</p>\n<ul>\n<li><code>contact_id</code>: The ID of the created contact.</li>\n<li><code>first_name</code>: First name of the contact.</li>\n<li><code>last_name</code>: Last name of the contact.</li>\n<li><code>email</code>: Email address of the contact.</li>\n<li><code>phone</code>: Phone number of the contact.</li>\n<li><code>tags</code>: Array of tags associated with the contact.</li>\n<li><code>custom_variables</code>: Object containing custom variable key-value pairs.</li>\n<li><code>timezone</code>: Timezone of the contact.</li>\n<li><code>state</code>: State of the contact.</li>\n<li><code>unsubscribed_at</code>: Date and time when the contact unsubscribed, if applicable.</li>\n<li><code>updated_at</code>: Date and time of the last update.</li>\n<li><code>created_at</code>: Date and time of creation.</li>\n<li><code>sms_consent_status</code>: Current SMS consent status (only returned for new contacts).</li>\n<li><code>email_consent_status</code>: Current email consent status (only returned for new contacts).</li>\n<li><code>consent_events</code>: Array of recorded consent events (only returned for new contacts when consent was provided).</li>\n</ul>\n<p>In case of an error, the response will include a relevant error message.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["contacts","create"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"18bd966a-ab0c-44ee-b416-a1c6003ba3a4","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"first_name","value":"John","description":"(Optional) First name of contact","type":"text"},{"key":"last_name","value":"Doe","description":"(Optional) Last name of contact","type":"text"},{"key":"phone","value":"5555555555","description":"(Required) Phone number of contact","type":"text"},{"key":"tags","value":"tester","description":"(Optional) Tags associated with contact, for multiple tags seperate by comma","type":"text"},{"key":"update","value":"true","description":"(Optional) Update the contact if they already exist (Default True)","type":"text"}]},"url":"https://api.withnomi.ai/contacts/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 31 Mar 2024 21:12:30 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=u34yp9nKgQdnEr4r3Mcwk14ULAB45oO35BIE3%2BZUbIq4D9tK6ZHWrrg7OKHwwVFeCp1eem5WkN%2F2%2FSLUFpXH2VvyKzPe6bx0bQAeSj1Xp6wE528oVus38v2nzV9TzA%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d356806eed6094-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"contact_id\": 178,\n        \"first_name\": \"John\",\n        \"last_name\": \"Doe\",\n        \"email\": \"john.doe@example.com\",\n        \"phone\": \"+15555555555\",\n        \"tags\": [\n            \"tester\"\n        ],\n        \"custom_variables\": {},\n        \"timezone\": \"America/Los_Angeles\",\n        \"state\": \"CA\",\n        \"unsubscribed_at\": null,\n        \"updated_at\": \"2024-03-31T21:12:30.000000Z\",\n        \"created_at\": \"2024-03-31T21:12:30.000000Z\",\n        \"sms_consent_status\": \"subscribed\",\n        \"email_consent_status\": null,\n        \"consent_events\": [\n            {\n                \"channel\": \"sms\",\n                \"status\": \"subscribed\",\n                \"source\": \"webform\"\n            }\n        ]\n    },\n    \"message\": \"Contact created successfully\"\n}"}],"_postman_id":"2b6920f4-5a8a-4503-90c8-ddcb1f2afa16"},{"name":"Lookup Contacts","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","pm.test(\"Response is an object with success property\", function () {","    pm.expect(pm.response.json()).to.be.an('object').that.has.property('success');","});","","pm.test(\"Data object contains contact_id, phone, and tags properties\", function () {","    var data = pm.response.json().data;","    pm.expect(data).to.be.an('object').that.includes.all.keys('contact_id', 'phone', 'tags');","});"],"type":"text/javascript","packages":{},"requests":{},"id":"8b6da6fe-ae94-4df1-9aec-321bfd1ca121"}}],"id":"81728a00-206f-4158-8897-31917e8de5ee","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"first_name","value":"John","description":"<p>(Optional) First name of contact</p>\n","type":"text"},{"key":"last_name","value":"Doe","description":"<p>(Optional) Last name of contact</p>\n","type":"text"},{"key":"email","value":"john.doe@example.com","description":"<p>(Optional) Email address of contact</p>\n","type":"text"},{"key":"phone","value":"5555555555","description":"<p>(Optional) Phone number of contact</p>\n","type":"text"},{"key":"tags","value":"tester","description":"<p>(Optional) Tags associated with contact, for multiple tags seperate by comma. Results will be matched for all tags included</p>\n","type":"text"},{"key":"contact_id","value":"178","description":"<p>(Optional) Id of the contact</p>\n","type":"text"},{"key":"state","value":"CA","description":"<p>(Optional) 2 letter state abbreviation</p>\n","type":"text"},{"key":"page","value":"1","description":"<p>(Optional) Page number for results (Default 1)</p>\n","type":"text"},{"key":"amount","value":"20","description":"<p>(Optional) Amount of results per page (Default 20, max 200)</p>\n","type":"text"}]},"url":"https://api.withnomi.ai/contacts/lookup","description":"<h3 id=\"contacts-lookup\">Contacts Lookup</h3>\n<p>This endpoint is used to look up contacts with optional parameters such as first name, last name, email, phone number, tags, contact ID, state, page number, and amount of results per page.</p>\n<p><strong>Request Body Parameters:</strong></p>\n<ul>\n<li><code>first_name</code> (Optional) - First name of contact</li>\n<li><code>last_name</code> (Optional) - Last name of contact</li>\n<li><code>email</code> (Optional) - Email address of contact</li>\n<li><code>phone</code> (Optional) - Phone number of contact</li>\n<li><code>tags</code> (Optional) - Tags associated with contact, for multiple tags separate by comma. Results will be matched for all tags included</li>\n<li><code>contact_id</code> (Optional) - Id of the contact</li>\n<li><code>state</code> (Optional) - 2 letter state abbreviation</li>\n<li><code>page</code> (Optional) - Page number for results (Default 1)</li>\n<li><code>amount</code> (Optional) - Amount of results per page (Default 20, max 200)</li>\n</ul>\n<p><strong>Response Fields:</strong></p>\n<p>Each contact in the response includes:</p>\n<ul>\n<li><code>sms_consent_status</code> - Current SMS consent status (subscribed, unsubscribed, pending, transactional_only, or null)</li>\n<li><code>email_consent_status</code> - Current email consent status (subscribed, unsubscribed, pending, transactional_only, or null)</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["contacts","lookup"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"93348f6b-b45b-4416-8605-2b636be780a3","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"first_name","value":"John","description":"(Optional) First name of contact","type":"text"},{"key":"last_name","value":"Doe","description":"(Optional) Last name of contact","type":"text"},{"key":"phone","value":"5555555555","description":"(Optional) Phone number of contact","type":"text"},{"key":"tags","value":"tester","description":"(Optional) Tags associated with contact, for multiple tags seperate by comma. Results will be matched for all tags included","type":"text"},{"key":"contact_id","value":"178","description":"(Optional) Id of the contact","type":"text"},{"key":"state","value":"CA","description":"(Optional) 2 letter state abbreviation","type":"text"},{"key":"page","value":"1","description":"(Optional) Page number for results (Default 1)","type":"text"},{"key":"amount","value":"20","description":"(Optional) Amount of results per page (Default 20, max 200)","type":"text"}]},"url":"https://api.withnomi.ai/contacts/lookup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 31 Mar 2024 21:15:08 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=1fwXfBD7OY7gqA%2FL%2FTxg6jlxEUrdIsmWAoIUF5QTHppSC%2BnDu9CVigG10wyDS7AZBynf6Iv28SNs%2BdW24%2Bswg0GUCmVr7a1YfuxlzA8vUG%2FuTbeOHTaUy6WOY38hTw%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d35a5dfbb76094-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"current_page\": 1,\n        \"per_page\": 20,\n        \"total_contacts\": 1,\n        \"contacts\": [\n            {\n                \"contact_id\": 178,\n                \"first_name\": \"John\",\n                \"last_name\": \"Doe\",\n                \"email\": \"john.doe@example.com\",\n                \"phone\": \"+15555555555\",\n                \"timezone\": \"America/Los_Angeles\",\n                \"state\": \"CA\",\n                \"tags\": [\n                    \"tester\"\n                ],\n                \"custom_variables\": {},\n                \"unsubscribed_at\": null,\n                \"sms_consent_status\": \"subscribed\",\n                \"email_consent_status\": null,\n                \"updated_at\": \"2024-03-31T21:12:30.000000Z\",\n                \"created_at\": \"2024-03-31T21:12:30.000000Z\"\n            }\n        ]\n    },\n    \"message\": \"Contact lookup successful\"\n}"}],"_postman_id":"81728a00-206f-4158-8897-31917e8de5ee"},{"name":"Update a Contact","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","pm.test(\"Response is an object with success property\", function () {","    pm.expect(pm.response.json()).to.be.an('object').that.has.property('success');","});","","pm.test(\"Data object contains contact_id, phone, and tags properties\", function () {","    var data = pm.response.json().data;","    pm.expect(data).to.be.an('object').that.includes.all.keys('contact_id', 'phone', 'tags');","});"],"type":"text/javascript","packages":{},"requests":{},"id":"e8912baf-c2b1-4e11-a37f-d3d0449131c4"}}],"id":"0cce9c16-723f-4bc4-9bed-c16a48da0ee1","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"contact_id","value":"178","description":"<p>(Required if phone is not present) Id of the contact to be updated</p>\n","type":"text"},{"key":"first_name","value":"John","description":"<p>(Optional) First name of contact to update</p>\n","type":"text"},{"key":"last_name","value":"Smith","description":"<p>(Optional) Last name of contact to update</p>\n","type":"text"},{"key":"email","value":"john.smith@example.com","description":"<p>(Optional) Email address of contact to update</p>\n","type":"text"},{"key":"phone","value":"5555555555","description":"<p>(Required if contact_id is not present) Phone number of contact to update</p>\n","type":"text"},{"key":"tags","value":"tester","description":"<p>(Optional) Apply new tags to the contact, for multiple tags seperate by comma</p>\n","type":"text"},{"key":"remove_tags","value":"tested","description":"<p>(Optional) Tags to remove from contact, for multiple tags seperate by comma</p>\n","type":"text"},{"key":"merge_tags","value":"true","description":"<p>(Optional) Merge tags if true, overwrite tags if false (Default true)</p>\n","type":"text"},{"key":"custom_variables[order_id]","value":"ORD-12345","description":"<p>(Optional) Add or update custom variables</p>\n","type":"text","disabled":true},{"key":"custom_variables[order_status]","value":"shipped","description":"<p>(Optional) Add or update custom variables</p>\n","type":"text","disabled":true},{"key":"remove_custom_variables[]","value":"discount_code","description":"<p>(Optional) Remove specific custom variable keys</p>\n","type":"text","disabled":true},{"key":"merge_custom_variables","value":"true","description":"<p>(Optional) Merge custom variables if true, overwrite if false (Default true)</p>\n","type":"text","disabled":true}]},"url":"https://api.withnomi.ai/contacts/update","description":"<p>This API endpoint allows you to update a contact's information. If the contact_id is not present, you must provide the phone number of the contact to be updated. You can include the first name, last name, email, tags, custom variables, and merge options in the payload to update the contact's details.</p>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<ul>\n<li><code>contact_id</code> (text, required if phone is not present): Id of the contact to be updated.</li>\n<li><code>first_name</code> (text, optional): First name of the contact to update.</li>\n<li><code>last_name</code> (text, optional): Last name of the contact to update.</li>\n<li><code>email</code> (text, optional): Email address of the contact to update.</li>\n<li><code>phone</code> (text, required if contact_id is not present): Phone number of the contact to update.</li>\n<li><code>tags</code> (text, optional): Apply new tags to the contact. For multiple tags, separate by comma.</li>\n<li><code>remove_tags</code> (text, optional): Tags to remove from the contact. For multiple tags, separate by comma.</li>\n<li><code>merge_tags</code> (text, optional): Merge tags if true, overwrite tags if false (Default true).</li>\n<li><code>custom_variables</code> (array, optional): Add or update custom variables (e.g., <code>custom_variables[order_id]=ORD-12345</code>).</li>\n<li><code>remove_custom_variables</code> (array, optional): Array of custom variable keys to remove (e.g., <code>remove_custom_variables[]=discount_code</code>).</li>\n<li><code>merge_custom_variables</code> (text, optional): Merge custom variables if true, overwrite if false (Default true).</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>Upon successful execution, the API returns a JSON response with a status code of 200 and the following structure:</p>\n<ul>\n<li><code>contact_id</code> - The ID of the contact.</li>\n<li><code>first_name</code> - First name of the contact.</li>\n<li><code>last_name</code> - Last name of the contact.</li>\n<li><code>email</code> - Email address of the contact.</li>\n<li><code>phone</code> - Phone number of the contact.</li>\n<li><code>tags</code> - Tags associated with the contact.</li>\n<li><code>custom_variables</code> - Object containing custom variable key-value pairs.</li>\n<li><code>timezone</code> - Timezone of the contact.</li>\n<li><code>state</code> - State of the contact.</li>\n<li><code>unsubscribed_at</code> - Date and time when the contact unsubscribed, if applicable.</li>\n<li><code>updated_at</code> - Date and time of the last update.</li>\n<li><code>created_at</code> - Date and time of creation.</li>\n</ul>\n<p>In case of an error, the response will include a <code>message</code> indicating the issue.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["contacts","update"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"141ec39a-9bbe-46dc-83ed-b5efdf447c88","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"contact_id","value":"178","description":"(Required if phone is not present) Id of the contact to be updated","type":"text"},{"key":"first_name","value":"John","description":"(Optional) First name of contact to update","type":"text"},{"key":"last_name","value":"Smith","description":"(Optional) Last name of contact to update","type":"text"},{"key":"phone","value":"5555555555","description":"(Required if contact_id is not present) Phone number of contact to update","type":"text"},{"key":"tags","value":"tester","description":"(Optional) Tags associated with contact, for multiple tags seperate by comma","type":"text"},{"key":"merge_tags","value":"true","description":"(Optional) Merge tags if true, overwrite tags if false (Default true)","type":"text"}]},"url":"https://api.withnomi.ai/contacts/update"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 31 Mar 2024 21:16:42 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=4%2BFiEovqeEMNYlb3hSXCz0a96OpFSc2PLtARhSrRkbxxbCjaHVLOT4H%2B4GIAZUqbZ4Z7FHiK5eby%2FETSFmnfgJtXAeh5dg86MwtCOdrOjhi1hpNeeGg1EeoJcT75fg%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d35ca87d246094-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"contact_id\": 178,\n        \"first_name\": \"John\",\n        \"last_name\": \"Smith\",\n        \"email\": \"john.smith@example.com\",\n        \"phone\": \"+15555555555\",\n        \"tags\": [\n            \"tester\"\n        ],\n        \"custom_variables\": {},\n        \"timezone\": \"Etc/Unknown\",\n        \"state\": \"CA\",\n        \"unsubscribed_at\": null,\n        \"updated_at\": \"2024-03-31T21:16:42.299463Z\",\n        \"created_at\": \"2024-03-31T21:12:30.000000Z\"\n    },\n    \"message\": \"Contact updated successfully\"\n}"}],"_postman_id":"0cce9c16-723f-4bc4-9bed-c16a48da0ee1"},{"name":"Unsubscribe a Contact","id":"aaa8aa78-c26e-4208-9c1b-a9c4b5311f84","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"phone","value":"5555555555","description":"<p>(Required if email is not present) Phone number of contact</p>\n","type":"text"},{"key":"email","value":"john.doe@example.com","description":"<p>(Required if phone is not present) Email address of contact</p>\n","type":"text"},{"key":"type","value":"both","description":"<p>(Optional) Unsubscribe type: 'sms', 'email', or 'both' (Default: both)</p>\n","type":"text"}]},"url":"https://api.withnomi.ai/contacts/unsubscribe","description":"<p>This API endpoint allows you to unsubscribe a contact from SMS and/or email communications.</p>\n<p><strong>Note:</strong> SMS contacts who are unsubscribed can only be resubscribed by texting START.</p>\n<h3 id=\"request-body\">Request Body</h3>\n<ul>\n<li><strong>phone</strong> (required if email is not present): Phone number of the contact.</li>\n<li><strong>email</strong> (required if phone is not present): Email address of the contact.</li>\n<li><strong>type</strong> (optional): Unsubscribe type - 'sms', 'email', or 'both'. Default is 'both'.</li>\n</ul>\n<h3 id=\"examples\">Examples</h3>\n<p><strong>Unsubscribe from SMS only:</strong></p>\n<ul>\n<li>phone: 5555555555</li>\n<li>type: sms</li>\n</ul>\n<p><strong>Unsubscribe from email only:</strong></p>\n<ul>\n<li>email: <a href=\"mailto:john.doe@example.com\">john.doe@example.com</a></li>\n<li>type: email</li>\n</ul>\n<p><strong>Unsubscribe from both (default):</strong></p>\n<ul>\n<li>phone: 5555555555</li>\n<li>(type parameter not needed - defaults to 'both')</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["contacts","unsubscribe"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"52ff9b68-6873-465b-9a3c-c3e046baed74","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"phone","value":"5555555555","description":"(Required) Phone number of contact","type":"text"}]},"url":"https://api.withnomi.ai/contacts/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Sun, 31 Mar 2024 21:17:26 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=hqUN9LpgZmdAuXMFz4e8hSZg4iu3BGzgdk%2FGSRhwGpAAKUlZsJwdTNrSxH%2Fa7UTBOFMsm9UCTZ0x44hLyPMQGUdfv0Oo6VLXtOtFO4xbdIxPC0tk%2BBtxaoYB6PR1DA%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d35dbd1d676094-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": [],\n    \"message\": \"Contact unsubscribed successfully\"\n}"}],"_postman_id":"aaa8aa78-c26e-4208-9c1b-a9c4b5311f84"}],"id":"6de4a194-f7c6-4c23-8bfa-6008b5933070","_postman_id":"6de4a194-f7c6-4c23-8bfa-6008b5933070","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}}},{"name":"Consent","item":[{"name":"Record Consent Event","id":"825f5e07-bd3a-46a6-a693-068bc3cb3169","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"channel\": \"sms\",\n    \"status\": \"subscribed\",\n    \"source\": \"webform\",\n    \"timestamp\": \"2026-01-15T10:30:00Z\",\n    \"consent_text\": \"I agree to receive SMS marketing messages from ACME Corp.\",\n    \"ip_address\": \"192.168.1.1\",\n    \"user_agent\": \"Mozilla/5.0\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.withnomi.ai/contacts/178/consent","description":"<h3 id=\"record-consent-event\">Record Consent Event</h3>\n<p>Record a new consent event for a contact. This is an immutable, append-only audit log of all consent changes.</p>\n<p><strong>Requires:</strong> <code>update</code> token ability</p>\n<h4 id=\"url-parameters\">URL Parameters</h4>\n<ul>\n<li><code>contact_id</code> (required): The internal ID of the contact.</li>\n</ul>\n<h4 id=\"request-body-json\">Request Body (JSON)</h4>\n<ul>\n<li><code>channel</code> (required): <code>sms</code> or <code>email</code></li>\n<li><code>status</code> (required): One of <code>subscribed</code>, <code>unsubscribed</code>, <code>pending</code>, <code>transactional_only</code></li>\n<li><code>source</code> (required): One of <code>checkout</code>, <code>webform</code>, <code>keyword</code>, <code>api</code>, <code>manual</code>, <code>stop</code>, <code>unsubscribe_link</code>, <code>spam_report</code></li>\n<li><code>timestamp</code> (required): ISO 8601 date of when consent was given</li>\n<li><code>consent_text</code> (required for SMS marketing opt-in): The consent language shown to the user</li>\n<li><code>ip_address</code> (optional): IP address when consent was given</li>\n<li><code>user_agent</code> (optional): User agent when consent was given</li>\n</ul>\n<h4 id=\"cooling-off-period\">Cooling-Off Period</h4>\n<p>If a contact recently unsubscribed, re-subscribing may be blocked by a cooling-off period (default 48 hours). The <code>keyword</code> source bypasses this restriction (e.g., texting START).</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>consent_event_id</code>: ID of the newly created consent event</li>\n<li><code>contact_id</code>: The contact's internal ID</li>\n<li><code>channel</code>: sms or email</li>\n<li><code>status</code>: The recorded consent status</li>\n<li><code>source</code>: The source of the consent change</li>\n<li><code>event_timestamp</code>: When consent was given</li>\n<li><code>created_at</code>: When the record was created</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["contacts","178","consent"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"737a3868-d40a-459a-9b48-7318704e3ee0","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"channel\": \"sms\",\n    \"status\": \"subscribed\",\n    \"source\": \"webform\",\n    \"timestamp\": \"2026-01-15T10:30:00Z\",\n    \"consent_text\": \"I agree to receive SMS marketing messages.\",\n    \"ip_address\": \"192.168.1.1\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.withnomi.ai/contacts/178/consent"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"consent_event_id\": 1,\n        \"contact_id\": 178,\n        \"channel\": \"sms\",\n        \"status\": \"subscribed\",\n        \"source\": \"webform\",\n        \"event_timestamp\": \"2026-01-15T10:30:00+00:00\",\n        \"created_at\": \"2026-01-15T10:31:00+00:00\"\n    },\n    \"message\": \"Consent recorded successfully\"\n}"},{"id":"aca1e21a-5864-498b-afbc-e22e64135bbc","name":"Cooling-Off Block","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"channel\": \"sms\",\n    \"status\": \"subscribed\",\n    \"source\": \"webform\",\n    \"timestamp\": \"2026-01-15T10:30:00Z\",\n    \"consent_text\": \"I agree to receive SMS marketing messages.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.withnomi.ai/contacts/178/consent"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"data\": {\n        \"hours_remaining\": 47\n    },\n    \"message\": \"Contact is within the cooling-off period. Re-opt-in blocked for approximately 47 more hours.\"\n}"}],"_postman_id":"825f5e07-bd3a-46a6-a693-068bc3cb3169"},{"name":"Get Consent History","id":"b7a1aefe-4ada-4f3f-8d04-c25b347c6a9e","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"https://api.withnomi.ai/contacts/178/consent?channel=sms","description":"<h3 id=\"get-consent-history\">Get Consent History</h3>\n<p>Retrieve the full consent event history for a contact, ordered by most recent first.</p>\n<p><strong>Requires:</strong> <code>read</code> token ability</p>\n<h4 id=\"url-parameters\">URL Parameters</h4>\n<ul>\n<li><code>contact_id</code> (required): The internal ID of the contact.</li>\n</ul>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>channel</code> (optional): Filter events by channel (<code>sms</code> or <code>email</code>). If omitted, all events are returned.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>contact_id</code>: The contact's internal ID</li>\n<li><code>current_sms_status</code>: Current derived SMS consent status</li>\n<li><code>current_email_status</code>: Current derived email consent status</li>\n<li><code>consent_events</code>: Array of consent events, each containing:<ul>\n<li><code>id</code>: Event ID</li>\n<li><code>channel</code>: sms or email</li>\n<li><code>status</code>: The consent status recorded</li>\n<li><code>source</code>: The source of the change</li>\n<li><code>event_timestamp</code>: When consent was given</li>\n<li><code>ip_address</code>: IP address (if recorded)</li>\n<li><code>consent_text</code>: Consent language (if recorded)</li>\n<li><code>created_at</code>: When the record was created</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["contacts","178","consent"],"host":["api","withnomi","ai"],"query":[{"description":{"content":"<p>(Optional) Filter by channel: sms or email</p>\n","type":"text/plain"},"key":"channel","value":"sms"}],"variable":[]}},"response":[{"id":"602a3ff5-879b-411d-beaf-9a50b8aadaf9","name":"Successful Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"https://api.withnomi.ai/contacts/178/consent"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"contact_id\": 178,\n        \"current_sms_status\": \"subscribed\",\n        \"current_email_status\": null,\n        \"consent_events\": [\n            {\n                \"id\": 1,\n                \"channel\": \"sms\",\n                \"status\": \"subscribed\",\n                \"source\": \"webform\",\n                \"event_timestamp\": \"2026-01-15T10:30:00+00:00\",\n                \"ip_address\": \"192.168.1.1\",\n                \"consent_text\": \"I agree to receive SMS marketing messages.\",\n                \"created_at\": \"2026-01-15T10:31:00+00:00\"\n            }\n        ]\n    },\n    \"message\": \"Consent history retrieved successfully\"\n}"}],"_postman_id":"b7a1aefe-4ada-4f3f-8d04-c25b347c6a9e"},{"name":"Get Consent Status","id":"943de8a9-fa38-4018-8f45-66055facda89","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"https://api.withnomi.ai/contacts/178/consent/status","description":"<h3 id=\"get-consent-status\">Get Consent Status</h3>\n<p>Get the current consent status summary for a contact, including whether they can receive marketing and transactional messages for each channel.</p>\n<p><strong>Requires:</strong> <code>read</code> token ability</p>\n<h4 id=\"url-parameters\">URL Parameters</h4>\n<ul>\n<li><code>contact_id</code> (required): The internal ID of the contact.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><code>contact_id</code>: The contact's internal ID</li>\n<li><code>sms</code>: SMS consent details<ul>\n<li><code>status</code>: Current SMS consent status (subscribed, unsubscribed, pending, transactional_only, or null)</li>\n<li><code>updated_at</code>: When the SMS consent was last changed</li>\n<li><code>can_receive_marketing</code>: Whether the contact can receive SMS marketing messages</li>\n<li><code>can_receive_transactional</code>: Whether the contact can receive transactional SMS</li>\n</ul>\n</li>\n<li><code>email</code>: Email consent details<ul>\n<li><code>status</code>: Current email consent status</li>\n<li><code>updated_at</code>: When the email consent was last changed</li>\n<li><code>can_receive_marketing</code>: Whether the contact can receive email marketing</li>\n<li><code>can_receive_transactional</code>: Whether the contact can receive transactional email</li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["contacts","178","consent","status"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"f909f9d5-c8ac-433a-bddc-a6c998c35099","name":"Successful Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"https://api.withnomi.ai/contacts/178/consent/status"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"contact_id\": 178,\n        \"sms\": {\n            \"status\": \"subscribed\",\n            \"updated_at\": \"2026-01-15T10:31:00+00:00\",\n            \"can_receive_marketing\": true,\n            \"can_receive_transactional\": true\n        },\n        \"email\": {\n            \"status\": null,\n            \"updated_at\": null,\n            \"can_receive_marketing\": false,\n            \"can_receive_transactional\": true\n        }\n    },\n    \"message\": \"Consent status retrieved successfully\"\n}"}],"_postman_id":"943de8a9-fa38-4018-8f45-66055facda89"}],"id":"cbe998df-9fdc-4e57-a22f-da4f41558a9d","_postman_id":"cbe998df-9fdc-4e57-a22f-da4f41558a9d","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}}},{"name":"Conversions","item":[{"name":"Record a Conversion","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","pm.test(\"Response is an object with success property\", function () {","    pm.expect(pm.response.json()).to.be.an('object').that.has.property('success');","});","","pm.test(\"Data object contains contact_id, phone, and tags properties\", function () {","    var data = pm.response.json().data;","    pm.expect(data).to.be.an('object').that.includes.all.keys('contact_id', 'phone', 'tags');","});"],"type":"text/javascript","packages":{},"requests":{},"id":"d679c069-5133-487d-ab97-0bbd1221580f"}}],"id":"59e6a387-ff58-4a1a-989a-725ad8fe0b1d","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"id","value":"AAAAAA","description":"<p>(Required) Id generated by a short code url</p>\n","type":"text"},{"key":"amount","value":"100","description":"<p>(Required) Amount the conversion is worth</p>\n","type":"text"}]},"url":"https://api.withnomi.ai/conversion","description":"<h2 id=\"api-request-description\">API Request Description</h2>\n<p>This endpoint allows you to submit a POST request to <a href=\"https://api.withnomi.ai/conversion\">https://api.withnomi.ai/conversion</a> in order to initiate a conversion process.</p>\n<p><strong>Note:</strong> No auth is needed on this endpoint</p>\n<h3 id=\"request-body\">Request Body</h3>\n<ul>\n<li><strong>id</strong> (text, Required): Id generated by a short code URL.</li>\n<li><strong>amount</strong> (text, Required): Amount the conversion is worth.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["conversion"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"ca7a4c1e-2980-47fd-959c-d8986d4bae82","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"id","value":"AAAAAA","description":"(Required) Id generated by a short code url","type":"text"},{"key":"amount","value":"20.00","description":"(Required) Amount the conversion is worth","type":"text"}]},"url":"https://api.withnomi.ai/conversion"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 01 Apr 2024 03:05:39 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"cache-control","value":"no-cache, private"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=ideqrBqytZ8uYwLlZUxZIKGopTgdj4Gze3cm9%2FmIZVG%2FjdDvO0aSX2bkA5hlQiJk80WPmp2GT7W8rm9%2FnP%2FrG4k88neLTJteWBtCscBQiE7DAHOzpvR5ve7xobZ%2BPw%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d55bcbfebf49ef-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": [],\n    \"message\": \"Conversion Succesful\"\n}"}],"_postman_id":"59e6a387-ff58-4a1a-989a-725ad8fe0b1d"}],"id":"141334b1-6eac-40f4-9bdf-75932e456f22","_postman_id":"141334b1-6eac-40f4-9bdf-75932e456f22","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}}},{"name":"Messages","item":[{"name":"Lookup Messages","id":"e5eb8899-82c9-48aa-9a95-8fb47fd273b3","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"contact_id","value":"1","description":"<p>(Required if phone is not present) Id of contact</p>\n","type":"text"},{"key":"phone","value":"5555555555","description":"<p>(Required if contact_id is not present) Phone number of contact</p>\n","type":"text"},{"key":"page","value":"1","description":"<p>(Optional) Page number for results (Default 1)</p>\n","type":"text"},{"key":"amount","value":"1","description":"<p>(Optional) Amount of results per page (Default 10, max 100)</p>\n","type":"text"}]},"url":"https://api.withnomi.ai/messages/lookup","description":"<p>This endpoint is used to look up messages with the given criteria.</p>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<ul>\n<li><p><code>contact_id</code> (text, required if phone is not present): Id of contact</p>\n</li>\n<li><p><code>phone</code> (text, required if contact_id is not present): Phone number of contact</p>\n</li>\n<li><p><code>page</code> (text, optional): Page number for results (Default 1)</p>\n</li>\n<li><p><code>amount</code> (text, optional): Amount of results per page (Default 10, max 100)</p>\n</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["messages","lookup"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"4c736dc0-bbc2-4e4b-9848-6456c04cccc4","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"contact_id","value":"1","description":"(Required if phone is not present) Id of contact","type":"text"},{"key":"phone","value":"5555555555","description":"(Required if contact_id is not present) Phone number of contact","type":"text"},{"key":"page","value":"1","description":"(Optional) Page number for results (Default 1)","type":"text"},{"key":"amount","value":"1","description":"(Optional) Amount of results per page (Default 10, max 100)","type":"text"}]},"url":"https://api.withnomi.ai/messages/lookup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 01 Apr 2024 00:57:40 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=G4OnuwX%2Bvfy4LI7Ca5bNRsOmepN%2BxJlKugnZtwNonhJoiTikZ22GhCnHtWqNhTuvb6KeY6eU9g8SdT%2Fpj5EV4ArwzalXNMOdKovftgY%2F57RdhPDxg80U%2Fb2e%2FCxdTw%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d4a058cd08295c-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"current_page\": 1,\n        \"per_page\": 10,\n        \"total_messages\": 1,\n        \"messages\": [\n            {\n                \"contact_id\": 1,\n                \"contact_first_name\": \"John\",\n                \"contact_last_name\": \"Smith\",\n                \"contact_phone\": \"+15555555555\",\n                \"message\": \"My Site: Hey [first_name], check out this awesome new product! \\n\\nhttps://mysite.com\\n\\nReply STOP to unsubscribe\",\n                \"status\": \"delivered\",\n                \"created_at\": \"2023-07-29 17:33:02\"\n            }\n        ]\n    },\n    \"message\": \"Message lookup successful\"\n}"}],"_postman_id":"e5eb8899-82c9-48aa-9a95-8fb47fd273b3"},{"name":"Send a Message","id":"f8eae637-1f04-48e4-a06b-2d95d1bb1def","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"contact_id","value":"1","description":"<p>(Required if phone is not present) Id of contact</p>\n","type":"text"},{"key":"phone","value":"5555555555","description":"<p>(Required if contact_id is not present) Phone number of contact</p>\n","type":"text"},{"key":"first_name","value":"John","description":"<p>(Optional) First name of contact</p>\n","type":"text"},{"key":"last_name","value":"Smith","description":"<p>(Optional) Last name of contact</p>\n","type":"text"},{"key":"tags","value":"tester","description":"<p>(Optional) Tags associated with contact, for multiple tags seperate by comma</p>\n","type":"text"},{"key":"message","value":"API Test Message [link]","description":"<p>(Required) Message body to be sent</p>\n","type":"text"},{"key":"number_id","value":"1","description":"<p>(Optional) The id of your number, if your account has multiple numbers (Default 1)</p>\n","type":"text"},{"key":"media_url","value":"https://withnomi.ai/images/logo.png","description":"<p>(Optional) Public URL of media you would like attached to the sms</p>\n","type":"text"},{"key":"promo_url","value":"https://google.com","description":"<p>(Optional) If you would like to generate a short code for your promotional url, add [link] token to message body to populate</p>\n","type":"text"}]},"url":"https://api.withnomi.ai/messages/create","description":"<p>This API endpoint allows you to create and send a message to a contact via the specified platform. The request should be sent as an HTTP POST to the given URL. The request body should be of form-data type and include parameters for contact information, message body, and optional settings.</p>\n<p><strong>Note:</strong> If the contact exists the tags will be added and name updated. If the contact does not exist it will be created.</p>\n<h3 id=\"message-tokens\">Message Tokens</h3>\n<p>You can use the following tokens in your message body that will be automatically replaced:</p>\n<p><strong>Standard Tokens:</strong></p>\n<ul>\n<li><code>[name]</code> - Full name (first + last)</li>\n<li><code>[first_name]</code> - First name only</li>\n<li><code>[last_name]</code> - Last name only</li>\n<li><code>[st]</code> - State abbreviation (e.g., \"CA\")</li>\n<li><code>[state]</code> - Full state name (e.g., \"California\")</li>\n<li><code>[link]</code> - Short link (if promo_url is provided)</li>\n</ul>\n<p><strong>Custom Variables:</strong></p>\n<ul>\n<li>Any custom variable stored on the contact can be used as a token (e.g., <code>[order_id]</code>, <code>[tracking_number]</code>)</li>\n<li>Custom variables are set via the <code>/contacts/create</code> or <code>/contacts/update</code> endpoints</li>\n</ul>\n<h3 id=\"request-body-parameters\">Request Body Parameters</h3>\n<ul>\n<li><code>contact_id</code> (text, required if phone is not present): Id of the contact.</li>\n<li><code>phone</code> (text, required if contact_id is not present): Phone number of the contact.</li>\n<li><code>first_name</code> (text, optional): First name of the contact.</li>\n<li><code>last_name</code> (text, optional): Last name of the contact.</li>\n<li><code>tags</code> (text, optional): Tags associated with the contact. For multiple tags, separate by comma.</li>\n<li><code>message</code> (text, required): Message body to be sent. Supports token replacement (see Message Tokens above).</li>\n<li><code>number_id</code> (text, optional): The id of your number, if your account has multiple numbers (Default 1).</li>\n<li><code>media_url</code> (text, optional): Public URL of media to be attached to the SMS.</li>\n<li><code>promo_url</code> (text, optional): If you would like to generate a short code for your promotional URL, add [link] token to message body to populate. Also supports custom variable tokens.</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>Upon successful execution, the API returns a JSON response with a status code of 200 and the following structure:</p>\n<ul>\n<li><code>success</code>: Indicates if the request was successful.</li>\n<li><code>data</code>: An array of data (if any) related to the request.</li>\n<li><code>message</code>: Any additional message or information related to the request.</li>\n</ul>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}},"urlObject":{"protocol":"https","path":["messages","create"],"host":["api","withnomi","ai"],"query":[],"variable":[]}},"response":[{"id":"e8d380b8-074d-4f95-ae1c-bd3db2e66929","name":"Successful Response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"contact_id","value":"1","description":"(Required if phone is not present) Id of contact","type":"text"},{"key":"phone","value":"5555555555","description":"(Required if contact_id is not present) Phone number of contact","type":"text"},{"key":"first_name","value":"John","description":"(Optional) First name of contact","type":"text"},{"key":"last_name","value":"Smith","description":"(Optional) Last name of contact","type":"text"},{"key":"tags","value":"tester","description":"(Optional) Tags associated with contact, for multiple tags seperate by comma","type":"text"},{"key":"message","value":"API Test Message [link]","description":"(Required) Message body to be sent","type":"text"},{"key":"number_id","value":"1","description":"(Optional) The id of your number, if your account has multiple numbers (Default 1)","type":"text"},{"key":"media_url","value":"https://withnomi.ai/images/logo.png","description":"(Optional) Public URL of media you would like attached to the sms","type":"text"},{"key":"promo_url","value":"https://google.com","description":"(Optional) If you would like to generate a short code for your promotional url, add [link] token to message body to populate","type":"text"}]},"url":"https://api.withnomi.ai/messages/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 01 Apr 2024 02:33:13 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, private"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"X-Frame-Options","value":"SAMEORIGIN"},{"key":"X-XSS-Protection","value":"1; mode=block"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=buPNGHiLneSZkc93qlQTnX6oUoYb1NulzYfjSdfHGGYsy7SanyIFvMzUn8oA2RD7rNs58PCxNpILKlq8CZtl98dwMEpYe0iVXJYKzUoglTeN4rOtcVIQzYb1TeUDTQ%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},{"key":"NEL","value":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"86d52c487fe42d85-ORD"},{"key":"Content-Encoding","value":"br"},{"key":"alt-svc","value":"h3=\":443\"; ma=86400"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": [],\n    \"message\": \"Message sent successfully\"\n}"}],"_postman_id":"f8eae637-1f04-48e4-a06b-2d95d1bb1def"}],"id":"c6382675-2969-4b31-91a2-ed3a2ae5732a","_postman_id":"c6382675-2969-4b31-91a2-ed3a2ae5732a","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]},"isInherited":true,"source":{"_postman_id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","id":"5d30bbab-50ae-4e83-9588-348df9e3f32d","name":"NOMI API","type":"collection"}}}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"apikey"},{"key":"value","value":"{{ YOUR_API_KEY }}"}]}},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"1f270447-6e72-4d15-80ab-f56149481af6"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"2d920fbd-503a-4787-bee0-f0f405fe109c"}}],"variable":[{"key":" apikey ","value":"{{ YOUR_API_KEY }}"}]}