---
title: "Connect the Email integration (born active; presence marker for the send_email tool)"
method: POST
path: "/v1/integrations/connections/email"
tags: ["integrations"]
---

# Connect the Email integration (born active; presence marker for the send_email tool)

`POST /v1/integrations/connections/email`

Create a born-``active`` presence connection so the ``send_email`` tool
materializes and becomes attachable. There is no credential to collect — the
Nylas API key is platform-level and the sending mailbox is connected via the
separate email OAuth flow. The tool sync is dispatched post-commit.

## Request body

- PlatformConnectionCreate — Body for ``POST /v1/integrations/connections/email``. A credential-less "platform" integration (the Nylas API key is platform-level and the sending mailbox is connected via the separate email OAuth flow). The connection is born ``active`` — there is nothing to authenticate here; it is a presence marker so the ``send_email`` tool materializes and becomes attachable. Only a ``nickname`` is needed.
  - `nickname` string

## Response `201`

Successful Response

- ConnectionResponse
  - `id` string, uuid, required
  - `organization_id` string, uuid, required
  - `integration_key` 'slack' | 'custom_mcp' | 'notion' | 'google_drive' | 'calcom' | 'twilio' | 'email', required — Stable identifier for each supported integration. The string value must match the vendor's per-provider identifier (for Nango: ``provider_config_key``). Persisted on ``integration_connections.integration_key`` and ``integration_connection_tools.integration_key``. Adding a new integration: append a member here, add an ``IntegrationSpec`` to ``INTEGRATIONS``, register the provider in the vendor cloud via ``src/integrations/bootstrap.py`` (Step 3).
  - `nickname_slug` string, required
  - `nickname` string, required
  - `vendor` string, required
  - `vendor_connection_id` string, nullable, required
  - `status` string, required
  - `tools_status` string, required
  - `tools_synced_at` string, date-time, nullable, required
  - `status_reason` string, nullable, required
  - `connected_at` string, date-time, nullable, required
  - `last_refreshed_at` string, date-time, nullable, required
  - `last_used_at` string, date-time, nullable, required
  - `metadata` object, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `tools` ConnectionToolResponse[]
    - `id` string, uuid, required
    - `connection_id` string, uuid, required
    - `organization_id` string, uuid, required
    - `integration_key` 'slack' | 'custom_mcp' | 'notion' | 'google_drive' | 'calcom' | 'twilio' | 'email', required — Stable identifier for each supported integration. The string value must match the vendor's per-provider identifier (for Nango: ``provider_config_key``). Persisted on ``integration_connections.integration_key`` and ``integration_connection_tools.integration_key``. Adding a new integration: append a member here, add an ``IntegrationSpec`` to ``INTEGRATIONS``, register the provider in the vendor cloud via ``src/integrations/bootstrap.py`` (Step 3).
    - `nickname_slug` string, required
    - `tool_path` string, required
    - `slug` string, required
    - `display_name` string, required
    - `description` string, nullable, required
    - `input_schema` object, required
    - `response_schema` object, nullable
    - `response_field_map` object, nullable
    - `input_defaults` object, nullable
    - `is_enabled` boolean, required
    - `last_seen_at` string, date-time, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `stale_field_paths` string[], required — Saved field-map paths no longer present in the shape (ENG-631 D4).
    - `default_count` integer, required — How many input fields carry an operator *default* (ENG-590 / PRD 7.7).
    - `pinned_count` integer, required — How many input fields are operator-*pinned* (ENG-590).
    - `stale_input_fields` string[], required — Configured input fields removed/renamed/retyped by a re-sync (PRD 7.6).
    - `merged_input_preview` object, required — ``input_schema`` with each operator value injected (PRD 7.8).

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
