{"info":{"_postman_id":"e6aea728-acc6-4afe-bae6-2a69383e2838","name":"Welcome to the Snappy Kraken Public API","description":"<html><head></head><body><p>The API is available on three environments. You will be supplied with an oauth client id, oauth client secret and test users for one of the environments. Each of the environments has their own domain so pay attention to that when making your api calls as the url may differ from the url in the examples.</p>\n<p><strong>Development</strong> - <a href=\"https://brain.snappykraken.dev\">https://brain.snappykraken.dev</a></p>\n<p><strong>Staging -</strong> <a href=\"https://staging-brain.snappykraken.com\">https://staging-brain.snappykraken.com</a></p>\n<p><strong>Production -</strong> <a href=\"https://brain.snappykraken.com\">https://brain.snappykraken.com</a></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"571217","collectionId":"e6aea728-acc6-4afe-bae6-2a69383e2838","publishedId":"2sA3kRJ3bo","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF3B39"},"publishDate":"2024-07-16T20:31:40.000Z"},"item":[{"name":"Authorization","item":[{"name":"RETRIEVE ACCESS TOKEN","id":"7e328cff-7548-4267-ae26-5ca4e7377441","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"grant_type\": \"client_credentials\",\n    \"client_id\": \"{ClientID}\",\n    \"client_secret\": \"{ClientSecret}\",\n    \"scope\": [\n        \"access-external-contacts\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/oauth/token","urlObject":{"path":["oauth","token"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"97a95557-8b99-456f-ac0a-863c6608c180","name":"RETRIEVE ACCESS TOKEN","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"grant_type\": \"client_credentials\",\n    \"client_id\": \"{ClientID}\",\n    \"client_secret\": \"{ClientSecret}\",\n    \"scope\": [\n        \"access-external-contacts\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/oauth/token"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Server","value":"nginx/1.19.2"},{"key":"Content-Type","value":"application/json; charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Powered-By","value":"PHP/7.4.11"},{"key":"pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, private"},{"key":"Date","value":"Fri, 16 Oct 2020 16:49:53 GMT"},{"key":"X-RateLimit-Limit","value":"60"},{"key":"X-RateLimit-Remaining","value":"59"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 31536000,\n    \"access_token\": \"{YOUR-ACCESS-TOKEN}\"\n}"}],"_postman_id":"7e328cff-7548-4267-ae26-5ca4e7377441"}],"id":"1ca7272d-b403-4a18-b705-5d291f0fc8c7","description":"<h2 id=\"to-begin-retrieve-an-access-token-via-the-oauth-endpoint\">To begin, retrieve an access token via the oauth endpoint</h2>\n<p>You will use that access token on all other endpoints to authenticate.</p>\n<p>You will be supplied with the following:</p>\n<ul>\n<li><p>ClientID</p>\n</li>\n<li><p>ClientSecret</p>\n</li>\n</ul>\n<p>Throughout the documentation these are referenced as variables like {ClientID}, and {ClientSecret}. You should replace these variables with the values you are provided.</p>\n","_postman_id":"1ca7272d-b403-4a18-b705-5d291f0fc8c7"},{"name":"Contact Management","item":[{"name":"Importing external contacts","item":[{"name":"ENABLE","id":"3625b1c2-1a04-4648-a1b6-8eb57f56a5bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/enable","description":"<p>The \"meta\", \"approved\" key in the response indicates whether or not your platform has enabled \"External Contact Imports\" functionality on Snappy Kraken. If they have not, then the contacts will be imported into a pending status. Once the functionality is enabled on Snappy Kraken, the import process will complete.</p>\n","urlObject":{"path":["api","v1","external","contacts","enable"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"567f2594-fc38-4cc9-b783-07fcc016ddb7","name":"ENABLE","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/enable"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"message\": \"User snappy-kraken-user@email.com was enabled for contacts importing.\"\n    },\n    \"meta\": {\n        \"approved\": false\n    }\n}"}],"_postman_id":"3625b1c2-1a04-4648-a1b6-8eb57f56a5bb"},{"name":"DISABLE","id":"fbf3769f-3700-43f8-98eb-0cce56c5bc8a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/disable","description":"<p>The \"meta\", \"approved\" key in the response indicates whether or not your platform has enabled \"External Contact Imports\" functionality on Snappy Kraken. If they have not, then the contacts will be imported into a pending status. Once the functionality is enabled on Snappy Kraken, the import process will complete.</p>\n","urlObject":{"path":["api","v1","external","contacts","disable"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"ccb91fe9-1e99-48a1-9fae-5f9dfe5056b1","name":"DISABLE","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/disable"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"message\": \"User snappy-kraken-user@email.com was disabled for contacts importing.\"\n    },\n    \"meta\": {\n        \"approved\": true\n    }\n}"}],"_postman_id":"fbf3769f-3700-43f8-98eb-0cce56c5bc8a"},{"name":"IMPORT","id":"bfa7ed3c-aa61-43ee-b8a3-dacdfcc2d0dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    },\n    \"audience\": {\n        \"name\": \"Foo Bar Baz\"\n    },\n    \"contacts\": [\n        {\n            \"first_name\": \"First Name\",\n            \"last_name\": \"Last Name\",\n            \"email\": \"foo@bar.baz\",\n            \"phone\": \"123123123\",\n            \"website\": \"https://google.com\",\n            \"address\": \"address\",\n            \"address2\": \"address2\",\n            \"city\": \"city\",\n            \"state\": \"state\",\n            \"zip\": \"zip\",\n            \"prospect_id\": \"5\",\n        },\n        {\n            \"first_name\": \"First Name\",\n            \"last_name\": \"Last Name\",\n            \"email\": \"foo2@bar.baz\",\n            \"phone\": \"123123123\",\n            \"website\": \"https://google.com\",\n            \"address\": \"address\",\n            \"address2\": \"address2\",\n            \"city\": \"city\",\n            \"state\": \"state\",\n            \"zip\": \"zip\",\n            \"prospect_id\": \"10\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/import","description":"<p>This endpoint accepts up to <strong>1000</strong> contacts at a time. The <em>optional</em> <strong>audience</strong> parameter applies to all contacts within the request. Each contact can only contain one phone, website, and address in the request.</p>\n<p>Contacts are only created once and are considered unique based on their email address. However, you can send a contact with the same email for a different audience if you want to associate the contact with multiple audiences.</p>\n<p>If the functionality has not been enabled for your platform you will see this message in the response. \"Your contacts have been received from {source}, but they're pending import because your platform admin hasn't enabled our 'External Contact Imports' functionality yet. Once they turn that on, we'll complete the import process.\" -- Otherwise there will be no message in the respopnse.</p>\n","urlObject":{"path":["api","v1","external","contacts","import"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"a94f2692-5ae5-4292-921e-fbe861f32604","name":"IMPORT","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    },\n    \"audience\": {\n        \"name\": \"Foo Bar Baz\"\n    },\n    \"contacts\": [\n        {\n            \"first_name\": \"First Name\",\n            \"last_name\": \"Last Name\",\n            \"email\": \"foo@bar.baz\",\n            \"phone\": \"123123123\",\n            \"website\": \"https://google.com\",\n            \"address\": \"address\",\n            \"address2\": \"address2\",\n            \"city\": \"city\",\n            \"state\": \"state\",\n            \"zip\": \"zip\",\n            \"prospect_id\": \"5\",\n        },\n        {\n            \"first_name\": \"First Name\",\n            \"last_name\": \"Last Name\",\n            \"email\": \"foo2@bar.baz\",\n            \"phone\": \"123123123\",\n            \"website\": \"https://google.com\",\n            \"address\": \"address\",\n            \"address2\": \"address2\",\n            \"city\": \"city\",\n            \"state\": \"state\",\n            \"zip\": \"zip\",\n            \"prospect_id\": \"10\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/import"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"import_report_id\": 1,\n        \"message\": \"Contacts were received and are pending approval. Your fleet administrator will need to approve the Contacts API integration before Snappy Kraken can import them.\"\n    },\n    \"meta\": {\n        \"approved\": false\n    }\n}"}],"_postman_id":"bfa7ed3c-aa61-43ee-b8a3-dacdfcc2d0dc"},{"name":"IMPORT CSV","id":"2c7ef9e1-3e66-4add-baed-b2301a034237","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    },\n    \"audience\": {\n        \"name\": \"Foo Bar Baz\"\n    },\n    \"header\": [\n        \"salutations\",\n        \"first name\",\n        \"middle name\",\n        \"last name\",\n        \"designations\",\n        \"email address\",\n        \"phone number\",\n        \"address\",\n        \"address 2\",\n        \"city\",\n        \"state\",\n        \"zip\",\n        \"website\",\n        \"prospect id\"\n    ],\n    \"contacts\": \"{URL-TO-.csv}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/import/csv","description":"<p>You can submit the header mapping in the request parameters, otherwise it will just default to the order of the parameters in the below example.</p>\n<p><strong>contacts</strong> accepts the full path to a .csv file hosted elsewhere.</p>\n","urlObject":{"path":["api","v1","external","contacts","import","csv"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"81db04b7-aa2e-4c1d-bec9-9525254cd6f8","name":"IMPORT CSV","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"user\": {\n        \"email\": \"snappy-kraken-user@email.com\"\n    },\n    \"audience\": {\n        \"name\": \"Foo Bar Baz\"\n    },\n    \"header\": [\n        \"salutations\",\n        \"first name\",\n        \"middle name\",\n        \"last name\",\n        \"designations\",\n        \"email address\",\n        \"phone number\",\n        \"address\",\n        \"address 2\",\n        \"city\",\n        \"state\",\n        \"zip\",\n        \"website\",\n        \"prospect id\"\n    ],\n    \"contacts\": \"{URL-TO-.csv}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/api/v1/external/contacts/import/csv"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"import_report_id\": 1,\n        \"message\": \"Contacts were received and are pending approval. Your fleet administrator will need to approve the Contacts API integration before Snappy Kraken can import them.\"\n    },\n    \"meta\": {\n        \"approved\": false\n    }\n}"}],"_postman_id":"2c7ef9e1-3e66-4add-baed-b2301a034237"},{"name":"REPORT","id":"95d8d7d4-5c9c-494e-ab40-26c1afe568fe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"formdata","formdata":[]},"url":"{{HOST}}/api/v1/external/contacts/import/reports/{{import_report_id}}","description":"<p>You can check the status of your import by using this endpoint and passing along your <strong>import_report_id</strong></p>\n","urlObject":{"path":["api","v1","external","contacts","import","reports","{{import_report_id}}"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"e6098bd8-17ea-4d7f-ab80-5bf40175ef17","name":"REPORT","originalRequest":{"method":"GET","header":[],"url":"{{HOST}}/api/v1/external/contacts/import/reports/{{import_report_id}}"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 1,\n        \"received\": 1,\n        \"rejected\": 0,\n        \"processed\": 0,\n        \"joined\": 0,\n        \"status\": \"started\"\n    }\n}"}],"_postman_id":"95d8d7d4-5c9c-494e-ab40-26c1afe568fe"},{"name":"REPORT ERRORS","id":"ef7f6bc1-dfdd-456f-8f2a-20a61d9e6d3c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"formdata","formdata":[]},"url":"{{HOST}}/api/v1/external/contacts/import/reports/{{import_report_id}}/errors","description":"<p>If you have any rejected items, you can check the errors by calling this endpoint and passing in your <strong>import_report_id</strong></p>\n<p>In the example below, the first contact is rejected because it is missing an email, and the second contact is reject for having an improperly formed email.</p>\n","urlObject":{"path":["api","v1","external","contacts","import","reports","{{import_report_id}}","errors"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"56950b08-da9e-4e8a-9807-0b34c4e311b4","name":"REPORT ERRORS","originalRequest":{"method":"GET","header":[],"url":"{{HOST}}/api/v1/external/contacts/import/reports/{{import_report_id}}/errors"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"contact_data\": {\n                \"uuid\": \"9d159db4-7abc-4856-b705-fd48aedc9faa\",\n                \"phones\": [\n                    {\n                        \"label\": null,\n                        \"phone\": \"phone number first row\",\n                        \"redtail_type\": null,\n                        \"wealthbox_type\": null\n                    }\n                ],\n                \"source\": \"external import - leading-response\",\n                \"websites\": [\n                    {\n                        \"website\": \"website-first-row.com\",\n                        \"redtail_type\": null,\n                        \"wealthbox_type\": null\n                    }\n                ],\n                \"addresses\": [\n                    {\n                        \"zip\": \"zip first row\",\n                        \"city\": \"city first row\",\n                        \"state\": \"state first row\",\n                        \"address\": \"address first row\",\n                        \"address2\": \"address 2 first row\",\n                        \"redtail_type\": null,\n                        \"wealthbox_type\": null\n                    }\n                ],\n                \"last_name\": \"last name first row\",\n                \"first_name\": \"first name first row\",\n                \"middle_name\": \"middle name first row\",\n                \"prospect_id\": \"foo1\",\n                \"salutations\": \"salutations first row\",\n                \"designations\": \"designations first row\"\n            },\n            \"error\": {\n                \"email\": [\n                    \"The email field is required.\"\n                ]\n            }\n        },\n        {\n            \"contact_data\": {\n                \"uuid\": \"9d159db4-7be3-4235-9647-d528901de3c6\",\n                \"email\": \"foobarbaz\",\n                \"phones\": [\n                    {\n                        \"label\": null,\n                        \"phone\": \"2127807381\",\n                        \"redtail_type\": null,\n                        \"wealthbox_type\": null\n                    }\n                ],\n                \"source\": \"external import - leading-response\",\n                \"websites\": [\n                    {\n                        \"website\": \"purevolume.com\",\n                        \"redtail_type\": null,\n                        \"wealthbox_type\": null\n                    }\n                ],\n                \"addresses\": [\n                    {\n                        \"zip\": \"11\",\n                        \"city\": \"New York City\",\n                        \"state\": \"New York\",\n                        \"address\": \"9551 Cottonwood Center\",\n                        \"address2\": \"vestibulum\",\n                        \"redtail_type\": null,\n                        \"wealthbox_type\": null\n                    }\n                ],\n                \"last_name\": \"Stairs\",\n                \"first_name\": \"Brand\",\n                \"middle_name\": \"Katinka\",\n                \"prospect_id\": \"foo7\",\n                \"salutations\": \"Aguistin\",\n                \"designations\": \"kstairs6\"\n            },\n            \"error\": {\n                \"email\": [\n                    \"The email must be a valid email address.\"\n                ]\n            }\n        }\n    ],\n    \"meta\": {\n        \"total_count\": 2\n    }\n}"}],"_postman_id":"ef7f6bc1-dfdd-456f-8f2a-20a61d9e6d3c"}],"id":"d8fb67fa-3c05-4b0b-a49b-d9ca6bd44cae","_postman_id":"d8fb67fa-3c05-4b0b-a49b-d9ca6bd44cae","description":""}],"id":"afbb28c0-96af-4e16-a655-49a36fc3aa72","_postman_id":"afbb28c0-96af-4e16-a655-49a36fc3aa72","description":""}],"event":[{"listen":"prerequest","script":{"id":"90da8202-c732-4f1b-bdcc-6840f27a2482","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"c0e191b9-4a91-463b-b2ff-dd5d83134981","type":"text/javascript","exec":[""]}}]}