mailjunky-ai Emails API

Send transactional emails via API

Operations 2

POST /emails/send Send an email #
POST /emails/batch Send batch emails #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mailjunky-ai:mailjunky-ai-emails-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mailjunky-ai-emails-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MailJunky Emails API
  version: 1.0.0
  description: 'The MailJunky API lets you send transactional emails, track user events, manage contacts, and build intelligent email workflows. All endpoints require API key authentication unless noted otherwise.


    ## SDK


    Install the official SDK for the easiest integration:


    ```bash

    npm install @mailjunky/sdk

    ```


    ```typescript

    import { MailJunky } from ''@mailjunky/sdk''

    const mailjunky = new MailJunky({ apiKey: ''mj_live_xxx'' })

    ```


    For browser-side event tracking:


    ```typescript

    import { initMailJunky } from ''@mailjunky/sdk/browser''

    const mj = initMailJunky({ apiKey: ''mj_pub_xxx'' })

    ```


    ## Authentication


    Authenticate by including your API key in the `Authorization` header:


    ```

    Authorization: Bearer mj_live_your_api_key

    ```


    You can also use the `X-API-Key` header. Public keys (`mj_pub_*`) are restricted to event tracking only.


    ## Rate Limits


    All responses include rate limit headers:

    - `X-RateLimit-Limit` - Requests allowed per window

    - `X-RateLimit-Remaining` - Requests remaining

    - `X-RateLimit-Reset` - Window reset time (unix timestamp)

    - `Retry-After` - Seconds to wait (when rate limited)


    ## Base URL


    ```

    https://www.mailjunky.ai/api/v1

    ```'
  contact:
    name: MailJunky Support
    url: https://www.mailjunky.ai
    email: support@mailjunky.ai
servers:
- url: https://www.mailjunky.ai/api/v1
  description: Production
security:
- bearerAuth: []
tags:
- name: Emails
  description: Send transactional emails via API
paths:
  /emails/send:
    post:
      operationId: sendEmail
      summary: Send an email
      description: 'Send a single transactional email. The email is queued for async delivery and returns immediately with a `queued` status.


        **Rate limit:** 60 requests/minute


        **Permissions required:** `email:send`


        **Note:** Free plan can only send to team members. Domain must be verified.'
      tags:
      - Emails
      x-codeSamples:
      - lang: JavaScript
        label: MailJunky SDK
        source: "import { MailJunky } from '@mailjunky/sdk'\n\nconst mailjunky = new MailJunky({ apiKey: 'mj_live_xxx' })\n\nconst result = await mailjunky.emails.send({\n  from: 'hello@yourapp.com',\n  to: 'user@example.com',\n  subject: 'Welcome aboard!',\n  html: '<h1>Welcome</h1><p>Thanks for signing up.</p>',\n  tags: [{ name: 'category', value: 'onboarding' }]\n})\n\nconsole.log(result.id, result.message_id)"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendEmailRequest'
            example:
              from: hello@yourapp.com
              to: user@example.com
              subject: Welcome aboard!
              html: <h1>Welcome</h1><p>Thanks for signing up.</p>
              tags:
              - name: category
                value: onboarding
      responses:
        '200':
          description: Email queued for delivery
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Email record ID
                  message_id:
                    type: string
                    description: Unique message ID for tracking
                  status:
                    type: string
                    const: queued
              example:
                id: cm1abc123
                message_id: <1708099200.abc123@yourapp.com>
                status: queued
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
  /emails/batch:
    post:
      operationId: sendBatchEmails
      summary: Send batch emails
      description: 'Send up to 100 personalized emails in a single request. Each email can have a different recipient, subject, and body. Returns per-email results.


        **Rate limit:** 10 requests/minute


        **Permissions required:** `email:send`'
      tags:
      - Emails
      x-codeSamples:
      - lang: JavaScript
        label: MailJunky SDK
        source: "import { MailJunky } from '@mailjunky/sdk'\n\nconst mailjunky = new MailJunky({ apiKey: 'mj_live_xxx' })\n\nconst result = await mailjunky.emails.sendBatch([\n  {\n    from: 'hello@yourapp.com',\n    to: 'alice@example.com',\n    subject: 'Your order shipped!',\n    html: '<h1>Order #001</h1>'\n  },\n  {\n    from: 'hello@yourapp.com',\n    to: 'bob@example.com',\n    subject: 'Your order shipped!',\n    html: '<h1>Order #002</h1>'\n  }\n])\n\nconsole.log(result.results)"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchEmailRequest'
            example:
              emails:
              - from: hello@yourapp.com
                to: alice@example.com
                subject: Your order shipped!
                html: '<h1>Order #001</h1><p>Your package is on its way.</p>'
              - from: hello@yourapp.com
                to: bob@example.com
                subject: Your order shipped!
                html: '<h1>Order #002</h1><p>Your package is on its way.</p>'
      responses:
        '200':
          description: Batch results
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        email:
                          type: string
                          description: Recipient email address
                        id:
                          type: string
                          description: Email record ID (if sent)
                        message_id:
                          type: string
                          description: Message ID (if sent)
                        status:
                          type: string
                          enum:
                          - sent
                          - failed
                        error:
                          type: string
                          description: Error message (if failed)
              example:
                results:
                - email: alice@example.com
                  id: cm1abc123
                  message_id: <1708099200.abc123@yourapp.com>
                  status: sent
                - email: bob@example.com
                  id: cm1abc124
                  message_id: <1708099200.abc124@yourapp.com>
                  status: sent
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    Error:
      type: object
      properties:
        statusCode:
          type: integer
        statusMessage:
          type: string
        message:
          type: string
        data:
          type: object
          description: Additional error details (e.g. validation errors)
          properties:
            fieldErrors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
            formErrors:
              type: array
              items:
                type: string
    SendEmailRequest:
      type: object
      required:
      - from
      - to
      - subject
      properties:
        from:
          oneOf:
          - type: string
            format: email
          - type: object
            required:
            - email
            properties:
              email:
                type: string
                format: email
              name:
                type: string
          description: Sender email address or object with email and display name
        to:
          oneOf:
          - type: string
            format: email
          - type: array
            items:
              type: string
              format: email
          description: Recipient email address(es)
        cc:
          oneOf:
          - type: string
            format: email
          - type: array
            items:
              type: string
              format: email
          description: CC recipient(s)
        bcc:
          oneOf:
          - type: string
            format: email
          - type: array
            items:
              type: string
              format: email
          description: BCC recipient(s)
        subject:
          type: string
          minLength: 1
          maxLength: 998
          description: Email subject line
        html:
          type: string
          description: HTML body. Either `html` or `text` is required.
        text:
          type: string
          description: Plain text body. Either `html` or `text` is required.
        reply_to:
          oneOf:
          - type: string
            format: email
          - type: array
            items:
              type: string
              format: email
          description: Reply-to address(es)
        tags:
          type: array
          items:
            type: object
            required:
            - name
            - value
            properties:
              name:
                type: string
              value:
                type: string
          description: Tags for categorization and filtering
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Custom key-value metadata
        category:
          type: string
          enum:
          - TRANSACTIONAL
          - WELCOME
          - MARKETING
          - NOTIFICATION
          - NEWSLETTER
          - CUSTOM
          description: Email category for analytics
    BatchEmailRequest:
      type: object
      required:
      - emails
      properties:
        emails:
          type: array
          minItems: 1
          maxItems: 100
          items:
            type: object
            required:
            - from
            - to
            - subject
            properties:
              from:
                type: string
                format: email
              to:
                oneOf:
                - type: string
                  format: email
                - type: array
                  items:
                    type: string
                    format: email
              cc:
                oneOf:
                - type: string
                  format: email
                - type: array
                  items:
                    type: string
                    format: email
              bcc:
                oneOf:
                - type: string
                  format: email
                - type: array
                  items:
                    type: string
                    format: email
              subject:
                type: string
                minLength: 1
                maxLength: 998
              html:
                type: string
              text:
                type: string
              reply_to:
                oneOf:
                - type: string
                  format: email
                - type: array
                  items:
                    type: string
                    format: email
              tags:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    value:
                      type: string
              metadata:
                type: object
                additionalProperties:
                  type: string
          description: Array of 1-100 emails to send
  responses:
    RateLimited:
      description: Rate limit or quota exceeded
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait before retrying
        X-RateLimit-Limit:
          schema:
            type: integer
        X-RateLimit-Remaining:
          schema:
            type: integer
        X-RateLimit-Reset:
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            statusCode: 429
            message: Rate limit exceeded. Please slow down.
    Unauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            statusCode: 401
            statusMessage: Unauthorized
            message: Invalid or missing API key
    Forbidden:
      description: Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            statusCode: 403
            statusMessage: Forbidden
            message: This API key does not have the required permission
    ValidationError:
      description: Request validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            statusCode: 400
            message: Validation failed
            data:
              fieldErrors:
                to:
                - Invalid email
              formErrors: []
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication. Use your `mj_live_*` or `mj_pub_*` key as the bearer token.
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'Alternative: pass your API key via the X-API-Key header.'
x-scalar-sdk-installation:
- lang: Node
  label: MailJunky SDK
  description: 'Install the official **MailJunky SDK** from npm:'
  source: npm install @mailjunky/sdk
- lang: JavaScript
  label: Browser SDK
  description: 'For browser-side event tracking:'
  source: npm install @mailjunky/sdk