Bottled API

Bottled API as documented publicly: 8 operations. Contract generated from the documentation by API Evangelist (2026-11-03); not the provider's own document.

Operations 8

POST /api/v1/send POST /api/v1/send #
GET /domains List all domains #
GET /domains/{name} Domain details #
POST /domains/{name} Verify domain DNS #
GET /emails List email addresses #
POST /emails Create email address #
POST /send Send an email #
GET /status Check your plan, current usage, and remaining quota. #

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/bottled-email:bottled-email-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

bottled-email-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Bottled API
  version: '2026-11-03'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-03: 8 operation(s) read from 1 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; Bottled has published no machine-readable contract that the pipeline
    could find. Engine: local.'
  x-evidence-tiers:
    code-example: 1
    documentation: 7
    pages-with-code: 1
    pages-read: 1
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-03'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://bottled.email/docs/api
paths:
  /api/v1/send:
    post:
      operationId: post_api_v1_send
      tags:
      - Api
      summary: POST /api/v1/send
      x-source: https://bottled.email/docs/api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1SendRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1SendResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl -X POST https://bottled.email/api/v1/send  -H \"Authorization: Bearer btl_YOUR_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"from\": \"hello@yourdomain.com\",\n \"to\": \"recipient@example.com\",\n \"subject\": \"Hello from Bottled\",\n \"text\"\
          : \"This email was sent via the Bottled API.\",\n \"html\": \"<p>This email was sent via the Bottled API.</p>\"\n }' Endpoints GET /status\
          \ Account status and usa"
  /domains:
    get:
      operationId: get_domains
      tags:
      - Domains
      summary: List all domains
      x-source: https://bottled.email/docs/api
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetDomainsResponse'
      x-evidence:
        kind: documentation
  /domains/{name}:
    get:
      operationId: get_domains_name
      tags:
      - Domains
      summary: Domain details
      x-source: https://bottled.email/docs/api
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetDomainsNameResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_domains_name
      tags:
      - Domains
      summary: Verify domain DNS
      x-source: https://bottled.email/docs/api
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostDomainsNameResponse'
      x-evidence:
        kind: documentation
  /emails:
    get:
      operationId: get_emails
      tags:
      - Emails
      summary: List email addresses
      x-source: https://bottled.email/docs/api
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEmailsResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_emails
      tags:
      - Emails
      summary: Create email address
      x-source: https://bottled.email/docs/api
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostEmailsResponse'
      x-evidence:
        kind: documentation
  /send:
    post:
      operationId: post_send
      tags:
      - Send
      summary: Send an email
      x-source: https://bottled.email/docs/api
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostSendRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostSendResponse'
      x-evidence:
        kind: documentation
  /status:
    get:
      operationId: get_status
      tags:
      - Status
      summary: Check your plan, current usage, and remaining quota.
      x-source: https://bottled.email/docs/api
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStatusResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiV1SendRequest:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
        subject:
          type: string
        text:
          type: string
        html:
          type: string
    PostApiV1SendResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: integer
            messageId:
              type: string
            from:
              type: string
            to:
              type: string
            subject:
              type: string
            status:
              type: string
            sentAt:
              type: string
              format: date-time
    GetDomainsResponse:
      type: object
      properties:
        data:
          type: array
          description: Array of domain objects
    GetDomainsNameResponse:
      type: object
      properties:
        data:
          type: object
          description: Domain detail object
    PostDomainsNameResponse:
      type: object
      properties:
        data:
          type: object
          description: Verification result
    GetEmailsResponse:
      type: object
      properties:
        data:
          type: array
          description: Array of email address objects
    PostEmailsResponse:
      type: object
      properties:
        data:
          type: object
          description: Created email address
    PostSendRequest:
      type: object
      properties:
        from:
          type: string
          description: Must be a verified email
        to:
          type: string
          description: Validated before send
        subject:
          type: string
          description: Max 998 chars
        text:
          type: string
          description: Plain-text body
        html:
          type: string
          description: HTML body (auto-wrapped)
        replyTo:
          type: string
          description: Reply‑to address
      required:
      - from
      - to
      - subject
    PostSendResponse:
      type: object
      properties:
        data:
          type: object
          description: Sent email details
    GetStatusResponse:
      type: object
      properties:
        data:
          type: object
          description: Root response object
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api
- name: Domains
- name: Emails
- name: Send
- name: Status