# Sending Profiles

A "Sending Profile" is the SMTP configuration that tells Gophish how to send emails.

Sending profiles support authentication and ignoring invalid SSL certificates.

Sending Profiles have the following structure:

```
{
  id                 : int64
  name               : string
  username           : string (optional)
  password           : string (optional)
  host               : string
  interface_type     : string
  from_address       : string
  ignore_cert_errors : boolean (default:false)
  modified_date      : string(datetime)
  headers            : array({key: string, value: string}) (optional)
}
```

## Get Sending Profiles

<mark style="color:blue;">`GET`</mark> `https://localhost/api/smtp/`

Gets a list of the sending profiles created by the authenticated user.

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| Authorization | string | A valid API key |

{% tabs %}
{% tab title="200 A list of the sending profiles created by the authenticated user." %}

```javascript
[
  {
    "id" : 1,
    "name":"Example Profile",
    "interface_type":"SMTP",
    "from_address":"John Doe <john@example.com>",
    "host":"smtp.example.com:25",
    "username":"",
    "password":"",
    "ignore_cert_errors":true,
    "modified_date": "2016-11-20T14:47:51.4131367-06:00",
    "headers": [
      {
        "key": "X-Header",
        "value": "Foo Bar"
      }
    ]
  }
]
```

{% endtab %}
{% endtabs %}

## Get Sending Profile

<mark style="color:blue;">`GET`</mark> `https://localhost:3333/api/smtp/:id`

Returns a sending profile given an ID, returning a 404 error if no sending profile with the provided ID is found.

#### Path Parameters

| Name | Type    | Description                      |
| ---- | ------- | -------------------------------- |
| id   | integer | The sending profile ID to return |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| Authorization | string | A valid API key |

{% tabs %}
{% tab title="200 " %}

```javascript
{
  "id" : 1,
  "name":"Example Profile",
  "interface_type":"SMTP",
  "from_address":"John Doe <john@example.com>",
  "host":"smtp.example.com:25",
  "username":"",
  "password":"",
  "ignore_cert_errors":true,
  "modified_date": "2016-11-20T14:47:51.4131367-06:00",
  "headers": [
    {
      "key": "X-Header",
      "value": "Foo Bar"
    }
  ]
}
```

{% endtab %}

{% tab title="404 " %}

```javascript
{
  "message": "SMTP not found",
  "success": false,
  "data": null
}
```

{% endtab %}
{% endtabs %}

## Create Sending Profile

<mark style="color:green;">`POST`</mark> `https://localhost:3333/api/smtp`

Creates a sending profile.

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| Authorization | string | A valid API key |

#### Request Body

| Name    | Type   | Description                                                                                                                                 |
| ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Payload | object | The body of the request is a JSON representation of a sending profile. Refer to the introduction for the valid format of a sending profile. |

{% tabs %}
{% tab title="201 " %}

```javascript
{
  "id" : 1,
  "name":"Example Profile",
  "interface_type":"SMTP",
  "from_address":"John Doe <john@example.com>",
  "host":"smtp.example.com:25",
  "username":"",
  "password":"",
  "ignore_cert_errors":true,
  "modified_date": "2016-11-20T14:47:51.4131367-06:00",
  "headers": [
    {
      "key": "X-Header",
      "value": "Foo Bar"
    }
  ]
}
```

{% endtab %}

{% tab title="400 If required fields aren't provided, or if a sending profile already exists with the provided name, a 400: Bad Request error will be returned." %}

```javascript
{
  "message": "Error message indicating the issue",
  "success": false,
  "data": null
}
```

{% endtab %}
{% endtabs %}

This method expects the sending profile to be provided in JSON format. You must provide a sending profile `name`, the `from_address` which emails are sent from, and the SMTP relay `host`.

Sending Profiles support authentication by setting the `username` and `password`.

Additionally, many SMTP server deployments leverage self-signed certificates. To tell Gophish to ignore these invalid certificates, set the `ignore_cert_errors` field to `true`.

This method returns the JSON representation of the sending profile that was created.

## Modify Sending Profile

<mark style="color:orange;">`PUT`</mark> `https://localhost:3333/api/smtp/:id`

Modifies an existing sending profile.

#### Path Parameters

| Name | Type    | Description                      |
| ---- | ------- | -------------------------------- |
| id   | integer | The sending profile ID to modify |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| Authorization | string | A valid API key |

#### Request Body

| Name    | Type   | Description                                                                                                                                 |
| ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Payload | object | The body of the request is a JSON representation of a sending profile. Refer to the introduction for the valid format of a sending profile. |

{% tabs %}
{% tab title="200 " %}

```javascript
{
  "id" : 1,
  "name":"Example Profile",
  "interface_type":"SMTP",
  "from_address":"John Doe <john@example.com>",
  "host":"smtp.example.com:25",
  "username":"",
  "password":"",
  "ignore_cert_errors":true,
  "modified_date": "2016-11-20T14:47:51.4131367-06:00",
  "headers": [
    {
      "key": "X-Header",
      "value": "Foo Bar"
    }
  ]
}
```

{% endtab %}

{% tab title="404 If no sending profile exists with the provided ID, a 404: Not Found error is returned." %}

```javascript
{
  "message": "SMTP not found",
  "success": false,
  "data": null
}
```

{% endtab %}
{% endtabs %}

This method expects the sending profile to be provided in JSON format. You must provide a full sending profile, not just the fields you want to update.

This method returns the JSON representation of the sending profile that was modified.

## Delete Sending Profile

<mark style="color:red;">`DELETE`</mark> `https://localhost:3333/api/smtp/:id`

Deletes a sending profile by ID.

#### Path Parameters

| Name | Type    | Description                             |
| ---- | ------- | --------------------------------------- |
| id   | integer | The ID of the sending profile to delete |

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| Authorization | string | A valid API key |

{% tabs %}
{% tab title="200 " %}

```javascript
{
  "message": "SMTP deleted successfully!",
  "success": true,
  "data": null
}
```

{% endtab %}

{% tab title="404 " %}

```javascript
{
  "message": "SMTP not found",
  "success": false,
  "data": null
}
```

{% endtab %}
{% endtabs %}

Returns a 404 error if the specified sending profile isn't found.

This method returns a status message indicating the sending profile was deleted successfully.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.getgophish.com/api-documentation/sending-profiles.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
