> ## Documentation Index
> Fetch the complete documentation index at: https://developer.instantly.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Place a DFY email account order

> Place a Done-For-You (DFY) email account order for your workspace.

**Order types**
- `dfy`: Buy new DFY accounts on new custom domains.
- `pre_warmed_up`: Buy available pre-warmed domains returned by `/dfy-email-account-orders/domains/pre-warmed-up-list`.
- `extra_accounts`: Add mailboxes to domains you already ordered. All active accounts on a domain must use the same `email_provider`.

**Provider limits and pricing**
- `1` Google: up to 5 mailboxes per domain; per-mailbox monthly pricing.
- `2` AirMail: up to 5 mailboxes per domain; per-mailbox monthly pricing.
- `3` Microsoft/Outlook: exactly 50 mailboxes per new DFY domain; per-domain monthly pricing; extra-account orders are not supported.

**Before ordering**
- Regular DFY domains must use supported TLDs: .com, .org.
- Check new-domain availability with `/dfy-email-account-orders/domains/check`.
- For pre-warmed orders, choose a domain from `/dfy-email-account-orders/domains/pre-warmed-up-list`; if none are available, use a regular `dfy` order instead.
- The workspace must have an Outreach plan and a default payment method.


Requires one of the following scopes: `dfy_email_account_orders:create`, `dfy_email_account_orders:all`, `all:create`, `all:all`



## OpenAPI

````yaml https://api.instantly.ai/openapi/api_v2.json post /api/v2/dfy-email-account-orders
openapi: 3.1.0
info:
  title: API Explorer
  description: >-
    The entire API V2 documentation is interactive and can be tested here. To
    the right side of every endpoint you will see a box with an example request.
    You can click on the "Try it" button to send a request to the server right
    from the docs. You will need to provide an API key by clicking the
    `ApiKeyAuth_token` blue text.
  version: 2.0.0
servers:
  - url: https://api.instantly.ai
    description: Instantly API Server
security:
  - ApiKeyAuth: []
tags:
  - name: Analytics
    description: Endpoints related to analytics
    x-displayName: Analytics
  - name: OAuth
    description: >-
      OAuth authentication endpoints for connecting Google and Microsoft email
      accounts
    x-displayName: OAuth
  - name: Account
    description: An email account that can be used to send campaigns
    x-displayName: Account
  - name: Campaign
    description: A campaign that can be sent to a list of recipients
    x-displayName: Campaign
  - name: Email
    description: >-
      A campaign email, a reply, a manually sent email, or any other email
      that's visible in the Unibox
    x-displayName: Email
  - name: EmailVerification
    description: A single email verification
    x-displayName: Email Verification
  - name: LeadList
    description: A list used to store leads
    x-displayName: Lead List
  - name: InboxPlacementTest
    description: An inbox placement test
    x-displayName: Inbox Placement Test
  - name: InboxPlacementAnalytics
    description: Analytics data for individual emails in inbox placement tests
    x-displayName: Inbox Placement Analytics
  - name: InboxPlacementBlacklist&SpamAssassinReport
    description: Report data for an inbox placement test
    x-displayName: Inbox Placement Blacklist & SpamAssassin Report
  - name: APIKey
    description: API Key
    x-displayName: API Key
  - name: AccountCampaignMapping
    description: Account Campaign Mapping
    x-displayName: Account Campaign Mapping
  - name: Lead
    description: A lead entity representing an individual lead
    x-displayName: Lead
  - name: BackgroundJob
    description: A background job that can be used to perform long-running tasks
    x-displayName: Background Job
  - name: CustomTag
    description: >-
      A custom tag for organizing and categorizing accounts and campaigns. You
      can use them as filters in apis that list accounts and campaigns.
    x-displayName: Custom Tag
  - name: CustomTagMapping
    description: >-
      This entity represents a tag being assigned to a specific campaign or
      email account. When an email account is assigned a tag, a new custom tag
      mapping entry is created, which connects the tag (`tag_id` field) with the
      email account (`resource_id` field). You can use it to see which tag si
      connected to which resource.
    x-displayName: Custom Tag Mapping
  - name: BlockListEntry
    description: A blocked email or domain
    x-displayName: Block List Entry
  - name: LeadLabel
    description: A custom label for categorizing and managing leads
    x-displayName: Lead Label
  - name: Workspace
    description: A workspace entity representing a workspace
    x-displayName: Workspace
  - name: SuperSearchEnrichment
    description: >-
      An enrichment can take different forms, such as email enrichment or
      LinkedIn enrichment. Leads may be imported from SuperSearch using the
      dedicated endpoint, or enriched directly within a list or campaign by
      attaching an enrichment to it.
    x-displayName: SuperSearch Enrichment
  - name: WorkspaceGroupMember
    description: >-
      A member of a workspace group. You can use the endpoints within this
      entity to manage the members of a workspace group.
    x-displayName: Workspace Group Member
  - name: WorkspaceMember
    description: A member of a workspace with associated user details
    x-displayName: Workspace Member
  - name: CampaignSubsequence
    description: A subsequence entity representing a follow-up sequence
    x-displayName: Campaign Subsequence
  - name: AuditLog
    description: Audit log records for tracking system activities
    x-displayName: Audit Log
  - name: Webhook
    description: A webhook subscription for receiving event notifications
    x-displayName: Webhook
  - name: WebhookEvent
    description: A webhook event that was sent or attempted to be sent
    x-displayName: Webhook Event
  - name: DFYEmailAccountOrder
    description: A Done-For-You email account order
    x-displayName: DFY Email Account Order
  - name: CustomPromptTemplate
    description: Custom prompt templates for creating custom prompts
    x-displayName: Custom Prompt Template
  - name: SalesFlow
    description: >-
      Manages how sales users view and interact with campaign and lead lists
      within the sales flow.
    x-displayName: Sales Flow
  - name: EmailTemplate
    description: A campaign email template
    x-displayName: Email Template
  - name: WorkspaceBilling
    description: Workspace Billing
    x-displayName: Workspace Billing
  - name: CRMActions
    description: CRM related actions
    x-displayName: CRM Actions
paths:
  /api/v2/dfy-email-account-orders:
    post:
      tags:
        - DFYEmailAccountOrder
      summary: Place a DFY email account order
      description: >-
        Place a Done-For-You (DFY) email account order for your workspace.


        **Order types**

        - `dfy`: Buy new DFY accounts on new custom domains.

        - `pre_warmed_up`: Buy available pre-warmed domains returned by
        `/dfy-email-account-orders/domains/pre-warmed-up-list`.

        - `extra_accounts`: Add mailboxes to domains you already ordered. All
        active accounts on a domain must use the same `email_provider`.


        **Provider limits and pricing**

        - `1` Google: up to 5 mailboxes per domain; per-mailbox monthly pricing.

        - `2` AirMail: up to 5 mailboxes per domain; per-mailbox monthly
        pricing.

        - `3` Microsoft/Outlook: exactly 50 mailboxes per new DFY domain;
        per-domain monthly pricing; extra-account orders are not supported.


        **Before ordering**

        - Regular DFY domains must use supported TLDs: .com, .org.

        - Check new-domain availability with
        `/dfy-email-account-orders/domains/check`.

        - For pre-warmed orders, choose a domain from
        `/dfy-email-account-orders/domains/pre-warmed-up-list`; if none are
        available, use a regular `dfy` order instead.

        - The workspace must have an Outreach plan and a default payment method.



        Requires one of the following scopes: `dfy_email_account_orders:create`,
        `dfy_email_account_orders:all`, `all:create`, `all:all`
      operationId: createDFYEmailAccountOrder
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                items:
                  type: array
                  description: List of domains and accounts to order
                  items:
                    type: object
                    properties:
                      domain:
                        type: string
                        description: >-
                          The domain to use for the email accounts.For regular
                          DFY accounts the only allowed domain extensions (tlds)
                          are .com and .org.For regular DFY accounts - you can
                          check the domain availability using the
                          /dfy-email-account-orders/domains/check endpoint
                          before placing an order.For pre-warmed up domains -
                          use the /dfy-email-account-orders/domains endpoint to
                          get a list of available domains.
                        example: example.com
                      email_provider:
                        type: number
                        description: >-
                          The mailbox product to order. Defaults to Google when
                          omitted.


                          Options:

                          - 1: Google. Up to 5 mailboxes per domain; priced per
                          mailbox monthly.

                          - 2: AirMail. Up to 5 mailboxes per domain; priced per
                          mailbox monthly.

                          - 3: Microsoft/Outlook. Exactly 50 mailboxes per new
                          DFY domain; priced per domain monthly.
                        enum:
                          - 1
                          - 2
                          - 3
                        x-enumDescriptions:
                          '1': Google
                          '2': AirMail
                          '3': Microsoft/Outlook
                        default: 1
                        example: 1
                      forwarding_domain:
                        type: string
                        description: >-
                          An optional domain to forward emails to. This domain
                          must be different from the main domain.
                        example: forward-to-this-domain.com
                      accounts:
                        type: array
                        description: >-
                          List of email accounts to create (only if
                          `pre_warmed_up` field is false). For pre-warmed up
                          domains this field will be ignored because the
                          accounts are already created and can't be changed.
                          Please provide minimum 1 and maximum 5 accounts per
                          domain for Google or AirMail, or exactly 50 for
                          Microsoft/Outlook.
                        items:
                          type: object
                          properties:
                            email_address_prefix:
                              type: string
                              description: >-
                                The prefix for the email address (the part
                                before the @). For instance, if the email
                                address is "john.doe@example.com", then the
                                email_address_prefix is "john.doe".
                              example: john.doe
                            first_name:
                              type: string
                              description: The first name of the account owner
                              example: John
                            last_name:
                              type: string
                              description: The last name of the account owner
                              example: Doe
                          required:
                            - email_address_prefix
                            - first_name
                            - last_name
                        default: []
                        maxItems: 50
                    required:
                      - domain
                order_type:
                  type: string
                  description: >-
                    The type of order to place. Please check the docs because
                    this endpoint performs different actions based on the order
                    type.
                  enum:
                    - dfy
                    - pre_warmed_up
                    - extra_accounts
                  x-enumDescriptions:
                    dfy: >-
                      Regular DFY accounts - it will place an order to buy new
                      DFY accounts
                    pre_warmed_up: >-
                      Pre-warmed up accounts - it will place an order to buy new
                      pre-warmed up accounts
                    extra_accounts: >-
                      Extra accounts - it will place an order to add extra
                      accounts to already ordered domains
                  example: dfy
                simulation:
                  type: boolean
                  description: >-
                    Whether to run a simulation of the order ot not. If set to
                    true, the order will NOT be placed, your card will NOT be
                    charged, and only a price quote will be returned. We will
                    still check the validity of the order and the accounts, and
                    return the results of the validation (if the order_is_valid
                    field is true, then the order would be valid and could be
                    placed).
                  default: false
                  example: false
              required:
                - items
                - order_type
        required: true
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  order_placed:
                    type: boolean
                    description: >-
                      Whether the order was placed or not. If true, then the
                      order was placed successfully. If false, then the order
                      was not placed due to an error or simulation mode was
                      enabled.
                    example: true
                  order_is_valid:
                    type: boolean
                    description: >-
                      Whether the order is valid or not. If true, then the order
                      is valid and can be placed. If false, then the order is
                      not valid and cannot be placed. Use this field when you
                      run a simulation to understand whether a real order would
                      be valid.
                    example: true
                  order_error:
                    type: string
                    description: >-
                      The error that occurred if the order was not placed. If
                      the order was placed successfully, then this field will be
                      omitted.
                    enum:
                      - unavailable_domains
                      - blacklist_domains
                      - invalid_domains
                      - invalid_forwarding_domains
                      - invalid_accounts
                      - payment_failed
                      - missing_domain_orders
                      - domains_without_accounts
                      - provider_mismatch
                      - unsupported_provider
                      - provider_unavailable
                    x-enumDescriptions:
                      unavailable_domains: >-
                        Some domains are not available for order - check the
                        `unavailable_domains` field
                      blacklist_domains: >-
                        Some domains are blacklisted - check the
                        `blacklist_domains` field
                      invalid_domains: >-
                        Some domains are invalid - check the `invalid_domains`
                        field
                      invalid_forwarding_domains: >-
                        Some forwarding domains are invalid - check the
                        `invalid_forwarding_domains` field
                      invalid_accounts: >-
                        Some accounts are invalid - check the `invalid_accounts`
                        field the list of invalid accounts
                      payment_failed: >-
                        The payment failed - please make sure you have enough
                        funds in your payment method
                      missing_domain_orders: >-
                        Some domains are missing orders (when you set the
                        `order_type` to `extra_accounts`, all the domains you
                        want to add extra accounts to must be already ordered) -
                        check the `missing_domain_orders` field
                      domains_without_accounts: >-
                        Some domains are missing accounts - check the
                        `domains_without_accounts` field
                      provider_mismatch: >-
                        Some domains received an `email_provider` that does not
                        match the existing accounts on that domain, or the
                        domain is in a mixed provider state — check the
                        `provider_mismatch_domains` field. All accounts for a
                        domain must use the same provider.
                      unsupported_provider: >-
                        Some domains use an existing provider that does not
                        support extra-account orders through this endpoint -
                        check the `unsupported_provider_domains` field.
                      provider_unavailable: >-
                        One or more requested email providers are not available
                        for ordering right now - check the
                        `unavailable_email_providers` field.
                    example: unavailable_domains
                  unavailable_domains:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: The list of unavailable domains (if any)
                  blacklist_domains:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: The list of blacklisted domains (if any)
                    example:
                      - example.com
                      - acme.com
                  invalid_domains:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: The list of invalid domains (if any)
                    example:
                      - example.com
                      - acme.com
                  invalid_forwarding_domains:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: The list of invalid forwarding domains (if any)
                    example:
                      - example.com
                      - acme.com
                  missing_domain_orders:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: >-
                      The list of domains that are missing order (if any). Can
                      happen when you order extra accounts for domains that you
                      didn't order before.
                  provider_mismatch_domains:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: >-
                      The list of domains whose requested `email_provider` does
                      not match the existing active provider for that domain, or
                      that are already in a mixed provider state in our records.
                      All accounts for a domain must use the same provider.
                  unsupported_provider_domains:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: >-
                      The list of domains that cannot receive extra accounts
                      through this endpoint because their existing provider is
                      not supported for public API extra-account orders.
                  unavailable_email_providers:
                    type: array
                    items:
                      type: number
                      enum:
                        - 1
                        - 2
                        - 3
                      x-enumDescriptions:
                        '1': Google
                        '2': AirMail
                        '3': Microsoft/Outlook
                      example: 2
                    description: >-
                      The requested email providers that are not available for
                      ordering right now.
                    example:
                      - 2
                  domains_without_accounts:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: >-
                      The list of domains without accounts (if any). The
                      `accounts` field for items in the `items` array for these
                      domains was empty.
                    example:
                      - example.com
                      - acme.com
                  invalid_accounts:
                    type: array
                    items:
                      type: object
                      properties:
                        domain:
                          type: string
                          description: The domain
                          example: example.com
                        first_name:
                          type: string
                          description: The account first name
                          example: John
                        last_name:
                          type: string
                          description: The account last name
                          example: Doe
                        email:
                          type: string
                          description: The account email
                          example: john.doe@example.com
                        reason:
                          type: string
                          description: The reason why the account is invalid
                          example: First name is required
                      required:
                        - domain
                        - first_name
                        - last_name
                        - email
                        - reason
                    description: The list of invalid accounts (if any)
                  free_domains:
                    type: array
                    items:
                      type: string
                      example: example.com
                    description: >-
                      The list of domains that are free (domains can be free
                      during promotions)
                    example:
                      - example.com
                      - acme.com
                  number_of_domains_ordered:
                    type: number
                    description: The number of domains ordered
                    example: 1
                  number_of_accounts_ordered:
                    type: number
                    description: The number of accounts ordered
                    example: 1
                  price_per_account_per_month:
                    type: number
                    description: >-
                      The monthly price charged per mailbox. Applies to
                      per-account providers (Google, AirMail). For
                      Microsoft/Outlook orders mailboxes are NOT charged
                      individually — see `price_per_domain_per_month` instead.
                    example: 4
                  price_per_domain_per_month:
                    type:
                      - 'null'
                      - number
                    description: >-
                      The monthly price charged per domain. Populated only when
                      the order contains Microsoft/Outlook items (domain-level
                      billing: $20/month/domain for a fixed 50-mailbox bundle).
                      Null for Google / AirMail-only orders.
                    example: 20
                  price_per_domain_per_year:
                    type: number
                    description: The price per domain per year
                    example: 100
                  total_domains_price_per_year:
                    type: number
                    description: The total price per domain per year
                    example: 100
                  total_accounts_price_per_month:
                    type: number
                    description: >-
                      The total monthly price charged for accounts in the order.
                      For Google / AirMail this is `per-account price × mailbox
                      count`. For Microsoft/Outlook it is `$20 × domain count`
                      (domain-level billing, fixed 50-mailbox bundle).
                    example: 10
                  total_price_per_month:
                    type: number
                    description: >-
                      The total price per month you will have to pay for the
                      order
                    example: 100
                  total_price_per_year:
                    type: number
                    description: >-
                      The total price per year you will have to pay for the
                      order
                    example: 100
                  total_price:
                    type: number
                    description: >-
                      The total price you will have to pay for the order at the
                      moment. This is the sum of the
                      `total_accounts_price_per_month` and the
                      `total_domains_price_per_year` fields.
                    example: 100
                  total_discount:
                    type: number
                    description: >-
                      The total discount you will get for the order at the
                      moment. Discounts are applied automatically when we're
                      running promotions.
                    example: 100
                  payment_method_last_4_digits:
                    type: string
                    description: The last 4 digits of the payment method used for the order
                    example: '1234'
                  payment_method_brand:
                    type: string
                    description: The brand of the payment method used for the order
                    example: Visa
                  payment_method_name_on_card:
                    type: string
                    description: The name on the card used for the order
                    example: John Doe
                  simulation:
                    type: boolean
                    description: >-
                      Whether to run the request in simulation mode or not. If
                      set to true, the order will NOT be placed, your card will
                      NOT be charged, and only a price quote will be returned.
                      We will still check the validity of the order and the
                      accounts, and return the results of the validation (if the
                      order_is_valid field is true, then the order would be
                      valid and could be placed).
                    example: true
                  order_items:
                    type: array
                    description: >-
                      The list of items that were ordered, with the pricing
                      information for each item.
                    items:
                      type: object
                      properties:
                        domain:
                          type: string
                          description: The domain to use for the email accounts.
                          example: example.com
                        accounts:
                          type: array
                          description: >-
                            The list of accounts that were ordered for the
                            domain.
                          items:
                            type: object
                            properties:
                              email_address_prefix:
                                type: string
                                description: The email address prefix of the account.
                                example: john.doe
                              first_name:
                                type: string
                                description: The account first name.
                                example: John
                              last_name:
                                type: string
                                description: The account last name.
                                example: Doe
                            required:
                              - email_address_prefix
                              - first_name
                              - last_name
                        email_provider:
                          type: number
                          description: >-
                            The mailbox product to order. Defaults to Google
                            when omitted.


                            Options:

                            - 1: Google. Up to 5 mailboxes per domain; priced
                            per mailbox monthly.

                            - 2: AirMail. Up to 5 mailboxes per domain; priced
                            per mailbox monthly.

                            - 3: Microsoft/Outlook. Exactly 50 mailboxes per new
                            DFY domain; priced per domain monthly.
                          enum:
                            - 1
                            - 2
                            - 3
                          x-enumDescriptions:
                            '1': Google
                            '2': AirMail
                            '3': Microsoft/Outlook
                          example: 1
                        forwarding_domain:
                          type: string
                          description: The forwarding domain to use for the domain.
                          example: example.com
                        domain_price:
                          type: number
                          description: The price for the domain.
                          example: 100
                        accounts_price:
                          type: number
                          description: >-
                            The total price for the accounts in the item. For
                            Google / AirMail this is `per-account price ×
                            mailbox count`. For Microsoft/Outlook it is the flat
                            `$20` per-domain bundle.
                          example: 20
                        domain_monthly_price:
                          type:
                            - 'null'
                            - number
                          description: >-
                            The monthly price for the domain bundle. Populated
                            only for providers whose billing is domain-level
                            (Microsoft/Outlook — $20/month/domain, 50
                            mailboxes). Null for per-account providers.
                          example: 20
                        total_price:
                          type: number
                          description: The total price for the item.
                          example: 100
                        total_discount:
                          type: number
                          description: The total discount for the item.
                          example: 100
                      required:
                        - domain
                        - accounts
                        - email_provider
                        - domain_price
                        - accounts_price
                        - total_price
                        - total_discount
                required:
                  - order_placed
                  - order_is_valid
                  - unavailable_domains
                  - blacklist_domains
                  - invalid_domains
                  - invalid_forwarding_domains
                  - invalid_accounts
                  - missing_domain_orders
                  - provider_mismatch_domains
                  - unsupported_provider_domains
                  - unavailable_email_providers
                  - domains_without_accounts
                  - free_domains
                  - number_of_domains_ordered
                  - number_of_accounts_ordered
                  - price_per_account_per_month
                  - price_per_domain_per_year
                  - total_domains_price_per_year
                  - total_accounts_price_per_month
                  - total_price_per_month
                  - total_price_per_year
                  - total_price
                  - total_discount
                  - simulation
                  - order_items
                  - payment_method_last_4_digits
                  - payment_method_brand
                  - payment_method_name_on_card
        '401':
          description: >-
            This request is unauthorized (either the Authorization header is
            missing or invalid, or the API key has been revoked)
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 401
                    example: 401
                  error:
                    type: string
                    enum:
                      - Unauthorized
                    example: Unauthorized
                  message:
                    type: string
                    example: Missing Authorization header
                required:
                  - statusCode
                  - error
                  - message
        '402':
          description: >-
            This request cannot be fulfilled because the workspace does not have
            an active paid plan
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 402
                    example: 402
                  error:
                    type: string
                    enum:
                      - Payment Required
                    example: Payment Required
                  message:
                    type: string
                    example: Workspace does not have an active paid plan
                required:
                  - statusCode
                  - error
                  - message
        '404':
          description: The requested resource was not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 404
                    example: 404
                  error:
                    type: string
                    enum:
                      - Not Found
                    example: Not Found
                  message:
                    type: string
                    example: Resource not found
                required:
                  - statusCode
                  - error
                  - message
        '429':
          description: >-
            You have exceeded the rate limit. Please check the rate limit docs
            for more information.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    enum:
                      - 429
                    example: 429
                  error:
                    type: string
                    enum:
                      - Too Many Requests
                    example: Too Many Requests
                  message:
                    type: string
                    example: Rate limit exceeded
                required:
                  - statusCode
                  - error
                  - message
components:
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer

````