(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{341:function(t,s,e){"use strict";e.r(s);var a=e(28),r=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"wolfeo-api"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#wolfeo-api"}},[t._v("#")]),t._v(" Wolfeo API")]),t._v(" "),s("p",[t._v("The Wolfeo API allows you to use Wolfeo as part of your production and website. The API provides a limited access to some of Wolfeo's features and functions. This API is subject to change and will be improved over time.")]),t._v(" "),s("h1",{attrs:{id:"getting-started"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[t._v("#")]),t._v(" Getting Started")]),t._v(" "),s("p",[t._v("The Wolfeo API is a "),s("strong",[s("em",[t._v("RESTful")])]),t._v(" API that returns a JSON response. Communication is via "),s("strong",[s("em",[t._v("HTTPS")])]),t._v(" and an "),s("strong",[s("em",[t._v("API Secret Key")])]),t._v(". An "),s("strong",[s("em",[t._v("API Secret Key")])]),t._v(" can be created in your settings inside your Wolfeo account.")]),t._v(" "),s("h1",{attrs:{id:"api-limits"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#api-limits"}},[t._v("#")]),t._v(" API Limits")]),t._v(" "),s("p",[t._v("The API has some limitations as below.")]),t._v(" "),s("p",[s("em",[t._v("Contacts limitations:")])]),t._v(" "),s("ul",[s("li",[t._v("Up to 2k Contacts can be added (START and PRO users).")]),t._v(" "),s("li",[t._v("Up to 10k Contacts can be added (ELITE users).")])]),t._v(" "),s("p",[s("em",[t._v("API calls limits:")])]),t._v(" "),s("ul",[s("li",[t._v("10 calls per second or 600 per minute.")])]),t._v(" "),s("p",[t._v("If you exceed this limit, Wolfeo will return an HTTP "),s("code",[t._v("429 Too Many Requests")]),t._v(" response. You should implement a queue or back-off strategy on your end.")]),t._v(" "),s("h1",{attrs:{id:"creating-a-secret-key"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-secret-key"}},[t._v("#")]),t._v(" Creating a Secret Key")]),t._v(" "),s("p",[t._v("The first step in order to communicate with the Wolfeo API is to generate your secret api key. To do so, you "),s("strong",[t._v("MUST HAVE")]),t._v(" a Wolfeo paid account. The API won't work with free trial user accounts.")]),t._v(" "),s("p",[t._v("Log in to your Wolfeo account and then go to Settings then API.")]),t._v(" "),s("p",[t._v("Click on the Generate API key button to create your API key.\n"),s("img",{attrs:{src:"https://d33v4339jhl8k0.cloudfront.net/docs/assets/5efc84b404286306f8060635/images/5fe8d0a5f24ccf588e3fea81/file-ytBvBFEszc.png",alt:""}})]),t._v(" "),s("p",[t._v("You can choose a name for your API key as you wish (optional):\n"),s("img",{attrs:{src:"https://d33v4339jhl8k0.cloudfront.net/docs/assets/5efc84b404286306f8060635/images/5fe8d0df495a886ca7828037/file-LSpR7wapfP.png",alt:""}})]),t._v(" "),s("p",[t._v("And finally click on Generate to see your API key.\n"),s("img",{attrs:{src:"https://d33v4339jhl8k0.cloudfront.net/docs/assets/5efc84b404286306f8060635/images/5fe8d109f24ccf588e3fea83/file-A46ZKC8jj1.png",alt:""}})]),t._v(" "),s("h1",{attrs:{id:"authentication"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#authentication"}},[t._v("#")]),t._v(" Authentication")]),t._v(" "),s("p",[t._v("Pass your API key as a Bearer token in the "),s("code",[t._v("Authorization")]),t._v(" header. This is the recommended approach:")]),t._v(" "),s("div",{staticClass:"language-curl extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('curl --request GET "https://api.wolfeo.me/v1/api" \\\n --header "Authorization: Bearer YOUR_API_KEY"\n')])])]),s("p",[t._v("For backwards compatibility, you may also pass the key as a query parameter:")]),t._v(" "),s("div",{staticClass:"language-curl extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('curl --request GET "https://api.wolfeo.me/v1/api?api_key=YOUR_API_KEY"\n')])])]),s("h1",{attrs:{id:"connecting"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#connecting"}},[t._v("#")]),t._v(" Connecting")]),t._v(" "),s("p",[t._v("Once you have generated your API key you can verify the connection with the test endpoint:")]),t._v(" "),s("div",{staticClass:"language-curl extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('curl --request GET "https://api.wolfeo.me/v1/api" \\\n --header "Authorization: Bearer YOUR_API_KEY"\n')])])]),s("p",[t._v("On success:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"admin@wolfeo.me"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h1",{attrs:{id:"response-format"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#response-format"}},[t._v("#")]),t._v(" Response Format")]),t._v(" "),s("p",[t._v("All API responses share a consistent envelope.")]),t._v(" "),s("p",[s("strong",[t._v("Success (single object or value):")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Success (paginated list):")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"data"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"meta"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"current_page"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"last_page"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"per_page"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"total"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("247")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Error:")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"error"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"code"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"ERROR_CODE"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"message"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Human-readable description"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[s("strong",[t._v("Validation error (HTTP 422):")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"error"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"code"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"VALIDATION_ERROR"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"message"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The given data was invalid"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"details"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"email"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The email field is required."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h1",{attrs:{id:"http-status-codes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#http-status-codes"}},[t._v("#")]),t._v(" HTTP Status Codes")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Code")]),t._v(" "),s("th",[t._v("Meaning")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("200")]),t._v(" "),s("td",[t._v("Request succeeded")])]),t._v(" "),s("tr",[s("td",[t._v("201")]),t._v(" "),s("td",[t._v("Resource created successfully")])]),t._v(" "),s("tr",[s("td",[t._v("400")]),t._v(" "),s("td",[t._v("Bad request — check your parameters")])]),t._v(" "),s("tr",[s("td",[t._v("401")]),t._v(" "),s("td",[t._v("Unauthorized — missing or invalid API key")])]),t._v(" "),s("tr",[s("td",[t._v("403")]),t._v(" "),s("td",[t._v("Forbidden — your key does not have access to this resource")])]),t._v(" "),s("tr",[s("td",[t._v("404")]),t._v(" "),s("td",[t._v("Not found — the requested resource does not exist")])]),t._v(" "),s("tr",[s("td",[t._v("409")]),t._v(" "),s("td",[t._v("Conflict — the resource already exists (e.g. duplicate contact email)")])]),t._v(" "),s("tr",[s("td",[t._v("422")]),t._v(" "),s("td",[t._v("Unprocessable — validation failed; see "),s("code",[t._v("error.details")]),t._v(" for field-level errors")])]),t._v(" "),s("tr",[s("td",[t._v("429")]),t._v(" "),s("td",[t._v("Too many requests — you have exceeded the rate limit")])]),t._v(" "),s("tr",[s("td",[t._v("500")]),t._v(" "),s("td",[t._v("Server error — something went wrong on our end")])])])]),t._v(" "),s("h1",{attrs:{id:"error-codes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#error-codes"}},[t._v("#")]),t._v(" Error Codes")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Code")]),t._v(" "),s("th",[t._v("HTTP")]),t._v(" "),s("th",[t._v("Description")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("code",[t._v("UNAUTHORIZED")])]),t._v(" "),s("td",[t._v("401")]),t._v(" "),s("td",[t._v("API key is missing or invalid")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("FORBIDDEN")])]),t._v(" "),s("td",[t._v("403")]),t._v(" "),s("td",[t._v("The API key does not have access to this resource")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("NOT_FOUND")])]),t._v(" "),s("td",[t._v("404")]),t._v(" "),s("td",[t._v("The requested contact, tag, or sequence does not exist")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("CONTACT_EXISTS")])]),t._v(" "),s("td",[t._v("409")]),t._v(" "),s("td",[t._v("A contact with this email already exists in your account")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("VALIDATION_ERROR")])]),t._v(" "),s("td",[t._v("422")]),t._v(" "),s("td",[t._v("One or more fields failed validation (see "),s("code",[t._v("error.details")]),t._v(")")])]),t._v(" "),s("tr",[s("td",[s("code",[t._v("SERVER_ERROR")])]),t._v(" "),s("td",[t._v("500")]),t._v(" "),s("td",[t._v("An unexpected server-side error occurred")])])])])])}),[],!1,null,null,null);s.default=r.exports}}]);