openapi: 3.1.0 info: title: Elastic Email API version: '2026-10-14' description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-14: 6 operation(s) read from 5 public documentation page(s) (each operation names its page in x-source). This is not the provider''s published contract; Elastic Email has published no machine-readable contract that the pipeline could find. Engine: local.' x-evidence-tiers: code-example: 1 documentation: 5 pages-with-code: 1 pages-read: 5 x-generated-from: documentation x-provenance: generated x-authored-by: API Evangelist x-generated: '2026-10-14' x-generator: generate-contract-from-docs.py x-engine: local x-sources: - http://help.elasticemail.com/en/articles/3119570-channels-for-smtp-and-api.md - http://help.elasticemail.com/en/articles/17578018-webhook-request-signing-and-json-delivery.md - https://elasticemail.com/developers/api-libraries/bash - https://help.elasticemail.com/en/articles/3119570-channels-for-smtp-and-api.md - https://help.elasticemail.com/en/articles/17578018-webhook-request-signing-and-json-delivery.md servers: - url: https://api.elasticemail.com paths: /: post: operationId: post tags: - Api summary: POST / x-source: https://elasticemail.com/developers/api-libraries/bash responses: '201': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl -F file=$file -H \"$apiKeyHeader\" -X POST \"$apiMethodUrl?encodingName=$encodingName&listName=$listNameEncoded\" \n Export\ \ Contacts \n If you want to export the selected contact to a downloadable file, you will need Access Level: Export . \n Put the following\ \ code into your file. \n Load library using the following line: \n Copied! #!/bin/bash \n Variable for host value: \n Copied! host=https://api.ela" /emails: post: operationId: post_emails tags: - Emails summary: Channels for API description: Send an email via the Elastic Email API, optionally specifying a channel name within the Options object. x-source: http://help.elasticemail.com/en/articles/3119570-channels-for-smtp-and-api.md requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/PostEmailsRequest' responses: '201': description: Success (status as documented) x-evidence: kind: documentation /hooks/elastic: post: operationId: post_hooks_elastic tags: - Hooks summary: Webhook request signing and JSON delivery x-source: http://help.elasticemail.com/en/articles/17578018-webhook-request-signing-and-json-delivery.md requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostHooksElasticRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostHooksElasticResponse' x-evidence: kind: documentation /v4/webhook: post: operationId: post_v4_webhook tags: - Webhook summary: Webhook request signing and JSON delivery x-source: http://help.elasticemail.com/en/articles/17578018-webhook-request-signing-and-json-delivery.md requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV4WebhookRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV4WebhookResponse' x-evidence: kind: documentation /v4/webhook/{id}: put: operationId: put_v4_webhook_id tags: - Webhook summary: Webhook request signing and JSON delivery x-source: http://help.elasticemail.com/en/articles/17578018-webhook-request-signing-and-json-delivery.md parameters: - name: id in: path required: true schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: documentation /v4/webhook/{id}/secret/rotate: post: operationId: post_v4_webhook_id_secret_rotate tags: - Webhook summary: Webhook request signing and JSON delivery x-source: http://help.elasticemail.com/en/articles/17578018-webhook-request-signing-and-json-delivery.md parameters: - name: id in: path required: true schema: type: string responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV4WebhookIdSecretRotateResponse' x-evidence: kind: documentation components: schemas: PostEmailsRequest: type: object properties: Options: type: object description: Object containing optional parameters for the email request. ChannelName: type: string description: Name of the channel to send the email through. If the channel does not exist it will be created. PostHooksElasticRequest: type: object properties: X-ElasticEmail-Timestamp: type: string description: Unix time when request was sent X-ElasticEmail-Signature: type: string description: Signature in form v1= X-ElasticEmail-Webhook-Id: type: string description: ID of the webhook body: type: string description: Event data as flat JSON object required: - X-ElasticEmail-Timestamp - X-ElasticEmail-Signature - X-ElasticEmail-Webhook-Id - body PostHooksElasticResponse: type: object properties: '200': type: string description: Successful verification '401': type: string description: Signature verification failed PostV4WebhookRequest: type: object properties: Name: type: string description: Webhook name URL: type: string description: Endpoint URL (https://) NotificationForSent: type: boolean description: Whether to receive sent notifications NotificationForError: type: boolean description: Whether to receive error notifications EnableSigning: type: boolean description: Enable request signing (default false) DeliveryMethod: type: string description: Delivery method, either Get (default) or PostJson required: - Name - URL PostV4WebhookResponse: type: object properties: SigningEnabled: type: boolean description: Whether signing is enabled DeliveryMethod: type: string description: Delivery method set for the webhook SigningSecret: type: string description: Secret starting with whsec_, only returned on creation PostV4WebhookIdSecretRotateResponse: type: object properties: SigningSecret: type: string description: New secret, starts with whsec_ tags: - name: Api - name: Emails - name: Hooks - name: Webhook