{"id":"pg_05bfsgy38waq","property_id":"prp_pfcr5h8cztsp","domain_id":"dom_gkgeprhezjg4wq","root_domain":"smashsend.com","locale":"en","url":"https://smashsend.com/docs/api/example","url_hash":"5cce8653e0d7676b24d06cdedbf111f88838e32275602bab0d3f329fac42353f","path":"/docs/api/example","depth":1,"canonical_url":"https://smashsend.com/docs/api/example","canonical_page_id":null,"page_type":"docs","page_type_guess":"docs","state":"indexed","skip_reason":null,"priority":"1.4","discovered_via":"sitemap","first_seen_at":"2026-08-28T03:07:01.092Z","last_seen_at":"2026-09-27T04:07:03.013Z","http_status":200,"content_hash":"43949e4482fe41c0d8aea0d27503930f6ab5b729a533d7603430d5e4d5bb9644","title":"SMASHSEND API Developer Guide","description":"Learn how to integrate with the SMASHSEND API using this example guide.","author":null,"published_at":null,"modified_at":null,"word_count":558,"reading_time_sec":152,"lang_detected":"en","images":[],"links_out":null,"markdown_source":"readability","refresh_interval":"monthly","last_fetched_at":"2026-09-27T04:10:44.012Z","next_refresh_at":"2026-10-27T04:10:44.012Z","runs_count":2,"changes_count":0,"last_changed_at":null,"fail_count":0,"last_error":null,"created_at":"2026-08-28T03:07:01.092Z","updated_at":"2026-08-28T03:07:01.092Z","inlinks":0,"inlinks_body":0,"outlinks":41,"outlinks_external":3,"anchor_terms":[],"template_score":null,"cash":"0","cash_total":"0.10","pagerank":"0.00145661129697194","is_orphan":true,"link_confirmed":true,"discovered_wave":0,"embedded_hash":null,"embedded_at":null,"domain_name":null,"brand_color":null,"domain_rank":null,"spam_score":null,"markdown":"This comprehensive guide covers everything you need to know to build powerful applications with the SMASHSEND API. From authentication to webhooks, learn how to leverage our platform capabilities to enhance your marketing tools.\n\n## Getting Started\n\nTo get started with the SMASHSEND API, you'll need to create an API key from your dashboard. Once you have your API key, you can use it to authenticate your requests.\n\nAll API requests should be made to the base URL: `https://api.smashsend.com/v1`\n\n```\n// Example API request using fetch\nconst response = await fetch('https://api.smashsend.com/v1/contacts', {\n  headers: {\n    'Authorization': 'Bearer YOUR_API_KEY',\n    'Content-Type': 'application/json'\n  }\n});\n\nconst data = await response.json();\nconsole.log(data);\n\n// Expected response:\n{\n  \"contacts\": {\n    \"items\": [\n      {\n        \"id\": \"ctc_B7OSYsnTUVwBPOGrgYTjvSGS\",\n        \"createdAt\": \"2025-06-04T05:26:05.593Z\",\n        \"updatedAt\": \"2025-06-04T05:26:05.593Z\",\n        \"properties\": {\n          \"email\": \"jane.doe@example.com\",\n          \"firstName\": \"Jane\",\n          \"lastName\": \"Doe\"\n        },\n        \"workspaceId\": \"wrk_ENGTK86JEXXckyDVJthKkPer\"\n      }\n    ],\n    \"cursor\": null,\n    \"hasMore\": false\n  }\n}\n```\n\n## Authentication\n\nAll requests to the SMASHSEND API require authentication. We use bearer tokens for authentication. Include your API key in the Authorization header of all requests.\n\n```\n// Example: Authenticating with the SMASHSEND API\nconst headers = {\n  'Authorization': 'Bearer YOUR_API_KEY',\n  'Content-Type': 'application/json'\n};\n\n// Test authentication\nconst response = await fetch('https://api.smashsend.com/v1/api-keys/check', { headers });\nconst result = await response.json();\n\n// Expected response:\n{\n  \"status\": \"SUCCEED\",\n  \"displayName\": \"My API Key\",\n  \"role\": \"EDITOR\"\n}\n```\n\n## Rate Limits\n\nThe SMASHSEND API has rate limits to ensure fair usage. Free accounts are limited to 60 requests per minute. Enterprise accounts have higher limits based on their plan.\n\nIf you exceed the rate limit, you'll receive a 429 Too Many Requests response. The response will include a Retry-After header indicating how many seconds to wait before making another request.\n\n## Error Handling\n\nThe SMASHSEND API uses conventional HTTP status codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided, and codes in the 5xx range indicate an error with our servers.\n\n```\n// Example error response\n{\n  \"statusCode\": 400,\n  \"error\": \"Bad Request\",\n  \"message\": \"The request was unacceptable, often due to missing a required parameter.\"\n}\n```\n\n## Webhooks\n\nWebhooks allow you to be notified about events that happen in your SMASHSEND account. Instead of having to poll the API, webhooks will send HTTP POST requests to your specified URL when certain events occur.\n\nCommon webhook events include:\n\n-   `CONTACT_CREATED` - When a new contact is created\n    \n-   `CONTACT_UPDATED` - When a contact is updated\n    \n-   `WORKSPACE_TEAM_MEMBER_JOINED` - When a team member joins the workspace\n    \n\nFor endpoints that return a list of items, the SMASHSEND API uses cursor-based pagination. The response will include a `has_more` boolean indicating if there are more items available, and a `next_cursor` string that can be used to retrieve the next page.\n\n```\n// Example: Paginating through contacts\nlet cursor = null;\nlet allContacts = [];\n\ndo {\n  const url = cursor \n    ? `https://api.smashsend.com/v1/contacts?cursor=${cursor}`\n    : 'https://api.smashsend.com/v1/contacts';\n    \n  const response = await fetch(url, { \n    headers: {\n      'Authorization': 'Bearer YOUR_API_KEY',\n      'Content-Type': 'application/json'\n    }\n  });\n  const data = await response.json();\n  \n  allContacts = [...allContacts, ...data.contacts.items];\n  cursor = data.contacts.cursor;\n  \n} while (data.contacts.hasMore);\n\nconsole.log(`Total contacts: ${allContacts.length}`);\n```\n\n## Best Practices\n\nFollow these best practices to ensure optimal integration with the SMASHSEND API:\n\n-   Use webhooks instead of polling whenever possible\n    \n-   Cache responses when appropriate to minimize API calls\n    \n-   Implement proper error handling for all API requests\n    \n-   Use a library that automatically retries failed requests with exponential backoff","storage":{"htmlKey":"stealpage/html/smashsend.com/pg_05bfsgy38waq/run_jvap_s8dwo4r.html.gz","markdownKey":"stealpage/md/smashsend.com/pg_05bfsgy38waq/run_jvap_s8dwo4r.md.gz"},"facets":null,"assets":[{"kind":"image","src_url":"https://smashsend.com/og/api_docs.jpg","r2_key":null,"alt":null,"caption":null,"width":null,"height":null,"is_hero":true,"zone":"main"},{"kind":"image","src_url":"https://smashsend.com/_next/static/media/smashsend_dark.da05b6ec.svg","r2_key":null,"alt":"SMASHSEND email marketing - The #1 Email Marketing Tool that turns emails into revenue","caption":null,"width":135,"height":30,"is_hero":false,"zone":"unknown"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/zapier_icon_filled.png","r2_key":null,"alt":"Zapier","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/mailchimp_icon.png","r2_key":null,"alt":"Mailchimp","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/webhooks_icon_gradient.png","r2_key":null,"alt":"Webhooks","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/events.png","r2_key":null,"alt":"Events API","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/_next/image?url=%2Favatar-profile.png&w=3840&q=75","r2_key":null,"alt":"Jorge Ferreiro","caption":null,"width":null,"height":null,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/_next/image?q=75&url=%2Favatar-profile.png&w=3840","r2_key":null,"alt":"Jorge Ferreiro","caption":null,"width":null,"height":null,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/_next/static/media/smashsend_light.be8a3849.svg","r2_key":null,"alt":"SMASHSEND email marketing - The #1 Email Marketing Tool that turns emails into revenue","caption":null,"width":171,"height":38,"is_hero":false,"zone":"footer"},{"kind":"image","src_url":"https://smashsend.com/marketing/legal/gdpr_compliance.png","r2_key":null,"alt":"SOC2","caption":null,"width":null,"height":50,"is_hero":false,"zone":"footer"}],"shots":[{"viewport":"mobile","width":390,"height":844,"r2_key":"stealpage/shots/smashsend.com/pg_05bfsgy38waq/run_jvap_s8dwo4r-mobile.png","phash":"2684b890d0b0b686","visual_delta":0,"captured_at":"2026-09-27T04:10:47.772Z"},{"viewport":"desktop","width":1440,"height":900,"r2_key":"stealpage/shots/smashsend.com/pg_05bfsgy38waq/run_jvap_s8dwo4r-desktop.png","phash":"8e6262400060f0f8","visual_delta":0,"captured_at":"2026-09-27T04:10:47.567Z"},{"viewport":"mobile","width":390,"height":844,"r2_key":"stealpage/shots/smashsend.com/pg_05bfsgy38waq/run_ux-155awib4s-mobile.png","phash":"2684b890d0b0b686","visual_delta":null,"captured_at":"2026-08-28T03:17:05.682Z"},{"viewport":"desktop","width":1440,"height":900,"r2_key":"stealpage/shots/smashsend.com/pg_05bfsgy38waq/run_ux-155awib4s-desktop.png","phash":"8e6262400060f0f8","visual_delta":null,"captured_at":"2026-08-28T03:17:04.944Z"}],"history":[{"id":"run_jvap_s8dwo4r","started_at":"2026-09-27T04:10:44.007Z","http_status":200,"fetcher":"direct","changed":false,"diff":{"added":0,"removed":21,"similarity":null},"word_count":558},{"id":"run_ux-155awib4s","started_at":"2026-08-28T03:16:55.220Z","http_status":200,"fetcher":"direct","changed":false,"diff":null,"word_count":579}],"citedBy":[]}