{"id":2542,"date":"2026-02-23T12:16:07","date_gmt":"2026-02-23T12:16:07","guid":{"rendered":"https:\/\/cyberpanel.net\/KnowledgeBase\/sending-email-rest-api\/"},"modified":"2026-02-23T12:17:10","modified_gmt":"2026-02-23T12:17:10","slug":"sending-email-rest-api","status":"publish","type":"post","link":"https:\/\/cyberpanel.net\/KnowledgeBase\/sending-email-rest-api\/","title":{"rendered":"Sending Email via REST API"},"content":{"rendered":"<style>\n.kb-info-box { background: #e8f4fd; border-left: 4px solid #2196F3; padding: 16px 20px; margin: 20px 0; border-radius: 4px; }\n.kb-info-box.warning { background: #fff8e1; border-left-color: #ff9800; }\n.kb-info-box.success { background: #e8f5e9; border-left-color: #4caf50; }\n.kb-info-box.tip { background: #f3e5f5; border-left-color: #9c27b0; }\n.kb-info-box strong { display: block; margin-bottom: 4px; }\n.kb-table { width: 100%; border-collapse: collapse; margin: 20px 0; }\n.kb-table th, .kb-table td { border: 1px solid #ddd; padding: 10px 14px; text-align: left; }\n.kb-table th { background: #f5f5f5; font-weight: 600; }\n.kb-table tr:nth-child(even) { background: #fafafa; }\n.kb-code { background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 6px; overflow-x: auto; margin: 16px 0; font-size: 14px; line-height: 1.5; }\n.kb-code .comment { color: #6a9955; }\n.kb-code .keyword { color: #569cd6; }\n.kb-code .string { color: #ce9178; }\n<\/style>\n<p>The CyberPanel Email REST API lets you send emails and retrieve analytics with simple HTTP requests. This guide covers authentication, endpoints, and code examples.<\/p>\n<h2>Authentication<\/h2>\n<p>Authenticate using your API key in one of two ways:<\/p>\n<pre class=\"kb-code\"><span class=\"comment\"># Option 1: Authorization header (recommended)<\/span>\nAuthorization: Bearer sk_live_YOUR_API_KEY\n\n<span class=\"comment\"># Option 2: X-API-Key header<\/span>\nX-API-Key: sk_live_YOUR_API_KEY<\/pre>\n<h3>Creating API Keys<\/h3>\n<ol>\n<li>Go to <a href=\"https:\/\/platform.cyberpersons.com\/email\/api-keys\/\" target=\"_blank\" rel=\"noopener\">https:\/\/platform.cyberpersons.com\/email\/api-keys\/<\/a><\/li>\n<li>Click <strong>Create API Key<\/strong><\/li>\n<li>Set a name and permissions:\n<ul>\n<li><strong>can_send<\/strong> &mdash; Send emails<\/li>\n<li><strong>can_read_analytics<\/strong> &mdash; Read message status and account stats<\/li>\n<\/ul>\n<\/li>\n<li>Optionally restrict to specific domains or IP addresses<\/li>\n<li>Copy the key &mdash; <strong>it&#8217;s only shown once!<\/strong><\/li>\n<\/ol>\n<h2>Send Email<\/h2>\n<p><code>POST https:\/\/platform.cyberpersons.com\/email\/v1\/send<\/code><\/p>\n<h3>Request Body<\/h3>\n<pre class=\"kb-code\">{\n  <span class=\"string\">\"from\"<\/span>: <span class=\"string\">\"you@yourcompany.com\"<\/span>,       <span class=\"comment\">\/\/ Required - must be verified domain<\/span>\n  <span class=\"string\">\"to\"<\/span>: <span class=\"string\">\"recipient@example.com\"<\/span>,        <span class=\"comment\">\/\/ Required<\/span>\n  <span class=\"string\">\"subject\"<\/span>: <span class=\"string\">\"Order Confirmation\"<\/span>,       <span class=\"comment\">\/\/ Required<\/span>\n  <span class=\"string\">\"html\"<\/span>: <span class=\"string\">\"&lt;h1&gt;Thank you!&lt;\/h1&gt;\"<\/span>,       <span class=\"comment\">\/\/ Required (html or text)<\/span>\n  <span class=\"string\">\"text\"<\/span>: <span class=\"string\">\"Thank you for your order.\"<\/span>,  <span class=\"comment\">\/\/ Optional plain-text fallback<\/span>\n  <span class=\"string\">\"cc\"<\/span>: <span class=\"string\">\"cc@example.com\"<\/span>,               <span class=\"comment\">\/\/ Optional<\/span>\n  <span class=\"string\">\"bcc\"<\/span>: <span class=\"string\">\"bcc@example.com\"<\/span>,             <span class=\"comment\">\/\/ Optional<\/span>\n  <span class=\"string\">\"reply_to\"<\/span>: <span class=\"string\">\"reply@yourcompany.com\"<\/span>,  <span class=\"comment\">\/\/ Optional<\/span>\n  <span class=\"string\">\"tags\"<\/span>: [<span class=\"string\">\"order\"<\/span>, <span class=\"string\">\"confirmation\"<\/span>],   <span class=\"comment\">\/\/ Optional - for filtering in logs<\/span>\n  <span class=\"string\">\"metadata\"<\/span>: {\"order_id\": \"12345\"},   <span class=\"comment\">\/\/ Optional - custom key-value pairs<\/span>\n  <span class=\"string\">\"headers\"<\/span>: {\"X-Custom\": \"value\"}     <span class=\"comment\">\/\/ Optional - custom email headers<\/span>\n}<\/pre>\n<h3>Success Response (202)<\/h3>\n<pre class=\"kb-code\">{\n  <span class=\"string\">\"success\"<\/span>: <span class=\"keyword\">true<\/span>,\n  <span class=\"string\">\"data\"<\/span>: {\n    <span class=\"string\">\"message_id\"<\/span>: <span class=\"string\">\"a1b2c3@cpmail.cyberpersons.com\"<\/span>,\n    <span class=\"string\">\"status\"<\/span>: <span class=\"string\">\"sent\"<\/span>,\n    <span class=\"string\">\"from\"<\/span>: <span class=\"string\">\"you@yourcompany.com\"<\/span>,\n    <span class=\"string\">\"to\"<\/span>: <span class=\"string\">\"recipient@example.com\"<\/span>,\n    <span class=\"string\">\"subject\"<\/span>: <span class=\"string\">\"Order Confirmation\"<\/span>,\n    <span class=\"string\">\"sent_at\"<\/span>: <span class=\"string\">\"2026-02-23T10:30:00Z\"<\/span>\n  }\n}<\/pre>\n<h2>Get Message Status<\/h2>\n<p><code>GET https:\/\/platform.cyberpersons.com\/email\/v1\/messages\/{message_id}<\/code><\/p>\n<h3>Response<\/h3>\n<pre class=\"kb-code\">{\n  <span class=\"string\">\"success\"<\/span>: <span class=\"keyword\">true<\/span>,\n  <span class=\"string\">\"data\"<\/span>: {\n    <span class=\"string\">\"message_id\"<\/span>: <span class=\"string\">\"a1b2c3@cpmail.cyberpersons.com\"<\/span>,\n    <span class=\"string\">\"status\"<\/span>: <span class=\"string\">\"delivered\"<\/span>,\n    <span class=\"string\">\"from\"<\/span>: <span class=\"string\">\"you@yourcompany.com\"<\/span>,\n    <span class=\"string\">\"to\"<\/span>: <span class=\"string\">\"recipient@example.com\"<\/span>,\n    <span class=\"string\">\"subject\"<\/span>: <span class=\"string\">\"Order Confirmation\"<\/span>,\n    <span class=\"string\">\"queued_at\"<\/span>: <span class=\"string\">\"2026-02-23T10:30:00Z\"<\/span>,\n    <span class=\"string\">\"sent_at\"<\/span>: <span class=\"string\">\"2026-02-23T10:30:01Z\"<\/span>,\n    <span class=\"string\">\"delivered_at\"<\/span>: <span class=\"string\">\"2026-02-23T10:30:02Z\"<\/span>,\n    <span class=\"string\">\"opened\"<\/span>: <span class=\"keyword\">true<\/span>,\n    <span class=\"string\">\"opened_at\"<\/span>: <span class=\"string\">\"2026-02-23T10:35:00Z\"<\/span>,\n    <span class=\"string\">\"open_count\"<\/span>: 2,\n    <span class=\"string\">\"clicked\"<\/span>: <span class=\"keyword\">false<\/span>,\n    <span class=\"string\">\"click_count\"<\/span>: 0,\n    <span class=\"string\">\"tags\"<\/span>: [<span class=\"string\">\"order\"<\/span>, <span class=\"string\">\"confirmation\"<\/span>],\n    <span class=\"string\">\"metadata\"<\/span>: {\"order_id\": \"12345\"}\n  }\n}<\/pre>\n<h2>Get Account Stats<\/h2>\n<p><code>GET https:\/\/platform.cyberpersons.com\/email\/v1\/account\/stats<\/code><\/p>\n<h3>Response<\/h3>\n<pre class=\"kb-code\">{\n  <span class=\"string\">\"success\"<\/span>: <span class=\"keyword\">true<\/span>,\n  <span class=\"string\">\"data\"<\/span>: {\n    <span class=\"string\">\"plan\"<\/span>: <span class=\"string\">\"starter\"<\/span>,\n    <span class=\"string\">\"status\"<\/span>: <span class=\"string\">\"active\"<\/span>,\n    <span class=\"string\">\"monthly_limit\"<\/span>: 50000,\n    <span class=\"string\">\"emails_sent_this_month\"<\/span>: 12340,\n    <span class=\"string\">\"emails_remaining\"<\/span>: 37660,\n    <span class=\"string\">\"reputation_score\"<\/span>: 95,\n    <span class=\"string\">\"domains_verified\"<\/span>: 3,\n    <span class=\"string\">\"rate_limits\"<\/span>: {\n      <span class=\"string\">\"per_minute\"<\/span>: 60,\n      <span class=\"string\">\"per_hour\"<\/span>: 3600,\n      <span class=\"string\">\"per_day\"<\/span>: 1700\n    },\n    <span class=\"string\">\"this_month\"<\/span>: {\n      <span class=\"string\">\"total\"<\/span>: 12340,\n      <span class=\"string\">\"delivered\"<\/span>: 12100,\n      <span class=\"string\">\"bounced\"<\/span>: 150,\n      <span class=\"string\">\"opened\"<\/span>: 8200,\n      <span class=\"string\">\"clicked\"<\/span>: 3100\n    }\n  }\n}<\/pre>\n<h2>Error Codes<\/h2>\n<table class=\"kb-table\">\n<tr>\n<th>HTTP Status<\/th>\n<th>Error Code<\/th>\n<th>Description<\/th>\n<\/tr>\n<tr>\n<td>400<\/td>\n<td><code>invalid_request<\/code><\/td>\n<td>Missing required fields or invalid email format<\/td>\n<\/tr>\n<tr>\n<td>403<\/td>\n<td><code>domain_not_verified<\/code><\/td>\n<td>Sending domain is not verified<\/td>\n<\/tr>\n<tr>\n<td>403<\/td>\n<td><code>domain_not_found<\/code><\/td>\n<td>Domain not registered to your account<\/td>\n<\/tr>\n<tr>\n<td>403<\/td>\n<td><code>account_inactive<\/code><\/td>\n<td>Account is suspended or inactive<\/td>\n<\/tr>\n<tr>\n<td>403<\/td>\n<td><code>forbidden<\/code><\/td>\n<td>API key domain\/IP restriction or protected domain<\/td>\n<\/tr>\n<tr>\n<td>404<\/td>\n<td><code>not_found<\/code><\/td>\n<td>Message ID not found<\/td>\n<\/tr>\n<tr>\n<td>429<\/td>\n<td><code>rate_limit_exceeded<\/code><\/td>\n<td>Rate limit reached (includes retry_after)<\/td>\n<\/tr>\n<tr>\n<td>500<\/td>\n<td><code>send_failed<\/code><\/td>\n<td>Sending failed after failover attempts<\/td>\n<\/tr>\n<tr>\n<td>503<\/td>\n<td><code>service_unavailable<\/code><\/td>\n<td>No healthy mail nodes available<\/td>\n<\/tr>\n<\/table>\n<h2>Code Examples<\/h2>\n<h3>cURL<\/h3>\n<pre class=\"kb-code\">curl -X POST https:\/\/platform.cyberpersons.com\/email\/v1\/send \\\n  -H <span class=\"string\">\"Authorization: Bearer sk_live_YOUR_KEY\"<\/span> \\\n  -H <span class=\"string\">\"Content-Type: application\/json\"<\/span> \\\n  -d <span class=\"string\">'{\"from\":\"you@yourcompany.com\",\"to\":\"user@example.com\",\"subject\":\"Hello\",\"html\":\"&lt;p&gt;Hi there!&lt;\/p&gt;\"}'<\/span><\/pre>\n<h3>Python (requests)<\/h3>\n<pre class=\"kb-code\"><span class=\"keyword\">import<\/span> requests\n\nresp = requests.post(\n    <span class=\"string\">\"https:\/\/platform.cyberpersons.com\/email\/v1\/send\"<\/span>,\n    headers={\"Authorization\": <span class=\"string\">\"Bearer sk_live_YOUR_KEY\"<\/span>},\n    json={\n        <span class=\"string\">\"from\"<\/span>: <span class=\"string\">\"you@yourcompany.com\"<\/span>,\n        <span class=\"string\">\"to\"<\/span>: <span class=\"string\">\"user@example.com\"<\/span>,\n        <span class=\"string\">\"subject\"<\/span>: <span class=\"string\">\"Hello\"<\/span>,\n        <span class=\"string\">\"html\"<\/span>: <span class=\"string\">\"&lt;p&gt;Hi there!&lt;\/p&gt;\"<\/span>,\n    }\n)\nprint(resp.json())<\/pre>\n<h3>Node.js (axios)<\/h3>\n<pre class=\"kb-code\"><span class=\"keyword\">const<\/span> axios = require(<span class=\"string\">'axios'<\/span>);\n\n<span class=\"keyword\">const<\/span> resp = <span class=\"keyword\">await<\/span> axios.post(<span class=\"string\">'https:\/\/platform.cyberpersons.com\/email\/v1\/send'<\/span>, {\n  from: <span class=\"string\">'you@yourcompany.com'<\/span>,\n  to: <span class=\"string\">'user@example.com'<\/span>,\n  subject: <span class=\"string\">'Hello'<\/span>,\n  html: <span class=\"string\">'&lt;p&gt;Hi there!&lt;\/p&gt;'<\/span>,\n}, {\n  headers: { Authorization: <span class=\"string\">'Bearer sk_live_YOUR_KEY'<\/span> }\n});\nconsole.log(resp.data);<\/pre>\n<h3>PHP (cURL)<\/h3>\n<pre class=\"kb-code\">$ch = curl_init(<span class=\"string\">'https:\/\/platform.cyberpersons.com\/email\/v1\/send'<\/span>);\ncurl_setopt_array($ch, [\n    CURLOPT_POST =&gt; <span class=\"keyword\">true<\/span>,\n    CURLOPT_RETURNTRANSFER =&gt; <span class=\"keyword\">true<\/span>,\n    CURLOPT_HTTPHEADER =&gt; [\n        <span class=\"string\">'Authorization: Bearer sk_live_YOUR_KEY'<\/span>,\n        <span class=\"string\">'Content-Type: application\/json'<\/span>,\n    ],\n    CURLOPT_POSTFIELDS =&gt; json_encode([\n        <span class=\"string\">'from'<\/span> =&gt; <span class=\"string\">'you@yourcompany.com'<\/span>,\n        <span class=\"string\">'to'<\/span> =&gt; <span class=\"string\">'user@example.com'<\/span>,\n        <span class=\"string\">'subject'<\/span> =&gt; <span class=\"string\">'Hello'<\/span>,\n        <span class=\"string\">'html'<\/span> =&gt; <span class=\"string\">'&lt;p&gt;Hi there!&lt;\/p&gt;'<\/span>,\n    ]),\n]);\n$response = curl_exec($ch);\ncurl_close($ch);\necho $response;<\/pre>\n<h2>Related Guides<\/h2>\n<ul>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/email-service-documentation\/\">Documentation Hub<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/getting-started-email-delivery\/\">Getting Started with Email Delivery<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/domain-verification-dns-setup\/\">Domain Verification &amp; DNS Setup<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/sending-email-smtp\/\">Sending Email via SMTP<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/webhooks-event-notifications\/\">Webhooks<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/email-analytics-and-logs\/\">Email Analytics and Logs<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/plans-pricing-rate-limits\/\">Plans, Pricing, and Rate Limits<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/email-service-documentation\/\">&larr; Back to Documentation Hub<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The CyberPanel Email REST API lets you send emails and retrieve analytics with simple HTTP requests. This guide covers authentication, endpoints, and code examples. Authentication Authenticate using your API key in one of two ways: # Option 1: Authorization header (recommended) Authorization: Bearer sk_live_YOUR_API_KEY # Option 2: X-API-Key header X-API-Key: sk_live_YOUR_API_KEY Creating API Keys Go [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-2542","post","type-post","status-publish","format-standard","hentry","category-email-service"],"_links":{"self":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts\/2542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/comments?post=2542"}],"version-history":[{"count":3,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts\/2542\/revisions"}],"predecessor-version":[{"id":2584,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts\/2542\/revisions\/2584"}],"wp:attachment":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/media?parent=2542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/categories?post=2542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/tags?post=2542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}