All URIs are relative to https://developers.hostinger.com
| Method | HTTP request | Description |
|---|---|---|
| connect_sending_domain_v1 | POST /api/reach/v1/profiles/{profileUuid}/domains | Connect sending domain |
| delete_sending_domain_v1 | DELETE /api/reach/v1/profiles/{profileUuid}/domains | Delete sending domain |
| get_connected_sending_domain_v1 | GET /api/reach/v1/profiles/{profileUuid}/domains | Get connected sending domain |
| get_profile_domain_dns_status_v1 | GET /api/reach/v1/profiles/{profileUuid}/domains/dns-status | Get profile domain DNS status |
| get_profile_settings_v1 | GET /api/reach/v1/profiles/{profileUuid}/settings | Get profile settings |
| get_remaining_plan_limits_v1 | GET /api/reach/v1/profiles/{profileUuid}/limits | Get remaining plan limits |
| list_plan_feature_access_v1 | GET /api/reach/v1/profiles/{profileUuid}/features | List plan feature access |
| list_profiles_v1 | GET /api/reach/v1/profiles | List Profiles |
| update_profile_settings_v1 | PATCH /api/reach/v1/profiles/{profileUuid}/settings | Update profile settings |
CommonSuccessEmptyResource connect_sending_domain_v1(profile_uuid, reach_v1_profiles_domains_connect_request)
Connect sending domain
Connect a sending domain to the profile so emails can be sent from addresses on it.
Connecting does not make the domain ready to send: check the DNS status endpoint next for
records that are still missing. A domain the account owns or has already verified connects
immediately. Any other domain starts a TXT ownership verification and returns 409;
complete the verification in Reach, then retry. Returns 422 when the profile or another
profile already has the domain, the domain is blocked, or its ownership cannot be verified.
An already connected domain is never replaced.
On success the sender address of draft and scheduled campaigns, and of published automation
and double opt-in emails, moves onto the new domain in the background, keeping the part
before the @.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.common_success_empty_resource import CommonSuccessEmptyResource
from hostinger_api.models.reach_v1_profiles_domains_connect_request import ReachV1ProfilesDomainsConnectRequest
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
reach_v1_profiles_domains_connect_request = hostinger_api.ReachV1ProfilesDomainsConnectRequest() # ReachV1ProfilesDomainsConnectRequest |
try:
# Connect sending domain
api_response = api_instance.connect_sending_domain_v1(profile_uuid, reach_v1_profiles_domains_connect_request)
print("The response of ReachProfilesApi->connect_sending_domain_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->connect_sending_domain_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter | |
| reach_v1_profiles_domains_connect_request | ReachV1ProfilesDomainsConnectRequest |
- Content-Type: application/json
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success empty response | - |
| 401 | Unauthenticated response | - |
| 409 | Conflict response. `Retry-After`, when present, is the number of seconds to wait before retrying. | * Retry-After - Seconds to wait before retrying the request |
| 422 | Validation error response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
CommonSuccessEmptyResource delete_sending_domain_v1(profile_uuid, reach_v1_profiles_domains_disconnect_request)
Delete sending domain
Disconnect the sending domain from the profile.
The domain record is removed, so the profile has no sending domain afterwards and campaigns cannot be sent until a domain is connected again. Sender addresses already stored on campaigns, automations and settings are left untouched and keep pointing at the removed domain. A domain that is not connected to the profile also succeeds, so success is not proof that anything was deleted. DNS records at the DNS provider are not removed. To switch domains, delete this one and connect the new one. Confirm the domain with the customer before calling.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.common_success_empty_resource import CommonSuccessEmptyResource
from hostinger_api.models.reach_v1_profiles_domains_disconnect_request import ReachV1ProfilesDomainsDisconnectRequest
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
reach_v1_profiles_domains_disconnect_request = hostinger_api.ReachV1ProfilesDomainsDisconnectRequest() # ReachV1ProfilesDomainsDisconnectRequest |
try:
# Delete sending domain
api_response = api_instance.delete_sending_domain_v1(profile_uuid, reach_v1_profiles_domains_disconnect_request)
print("The response of ReachProfilesApi->delete_sending_domain_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->delete_sending_domain_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter | |
| reach_v1_profiles_domains_disconnect_request | ReachV1ProfilesDomainsDisconnectRequest |
- Content-Type: application/json
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success empty response | - |
| 422 | Validation error response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ReachV1ProfilesDomainsSendingDomainResource get_connected_sending_domain_v1(profile_uuid)
Get connected sending domain
Get the sending domain connected to the profile, its verification status and any suspended sender addresses.
Campaigns only go out once a domain is connected and active, so this is the cheapest way to
check that precondition before building one. A profile with no domain connected returns the
same shape with every field set to null. For the individual MX, SPF, DKIM and DMARC records
behind the status, use the DNS status endpoint.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.reach_v1_profiles_domains_sending_domain_resource import ReachV1ProfilesDomainsSendingDomainResource
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
try:
# Get connected sending domain
api_response = api_instance.get_connected_sending_domain_v1(profile_uuid)
print("The response of ReachProfilesApi->get_connected_sending_domain_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->get_connected_sending_domain_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter |
ReachV1ProfilesDomainsSendingDomainResource
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ReachV1ProfilesDomainsDnsStatusResource get_profile_domain_dns_status_v1(profile_uuid)
Get profile domain DNS status
Retrieve the DNS configuration status for a profile's domain.
This endpoint reports the state of MX, SPF, DKIM and DMARC records, including the actual records found and the suggested records required for correct email delivery.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.reach_v1_profiles_domains_dns_status_resource import ReachV1ProfilesDomainsDnsStatusResource
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
try:
# Get profile domain DNS status
api_response = api_instance.get_profile_domain_dns_status_v1(profile_uuid)
print("The response of ReachProfilesApi->get_profile_domain_dns_status_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->get_profile_domain_dns_status_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter |
ReachV1ProfilesDomainsDnsStatusResource
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ReachV1ProfilesSettingsSettingsResource get_profile_settings_v1(profile_uuid)
Get profile settings
Get the profile's saved sender identity and brand details.
Read the default sender before creating a campaign instead of asking the customer, and
reuse the brand fields when generating email content. Any field can be null for a profile
that never filled its settings in. This does not check that the sending domain is
verified, use the connected sending domain endpoint for that.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.reach_v1_profiles_settings_settings_resource import ReachV1ProfilesSettingsSettingsResource
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
try:
# Get profile settings
api_response = api_instance.get_profile_settings_v1(profile_uuid)
print("The response of ReachProfilesApi->get_profile_settings_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->get_profile_settings_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter |
ReachV1ProfilesSettingsSettingsResource
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ReachV1ProfilesPlanLimitsResource get_remaining_plan_limits_v1(profile_uuid)
Get remaining plan limits
Get how much of the plan is left for the current period.
Two things to keep in mind before you build alerting on this. The period is a calendar month rather than a billing anniversary, so the counters reset on the 1st no matter when the subscription started. And usage is tracked per order, so every profile on the same order shares one pool and reports the same numbers here. Only the current period is available, past usage is not kept.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.reach_v1_profiles_plan_limits_resource import ReachV1ProfilesPlanLimitsResource
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
try:
# Get remaining plan limits
api_response = api_instance.get_remaining_plan_limits_v1(profile_uuid)
print("The response of ReachProfilesApi->get_remaining_plan_limits_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->get_remaining_plan_limits_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter |
ReachV1ProfilesPlanLimitsResource
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
List[ReachV1ProfilesFeaturesPlanFeatureResource] list_plan_feature_access_v1(profile_uuid)
List plan feature access
List which plan features the profile can use.
This is the feature lock matrix, not a usage quota. available means the feature can be
used right now and locked means it is not part of the base plan, so an upgrade is needed.
For remaining emails, recipients and AI credits use the limits endpoint instead.
Worth checking before building something that cannot be activated afterwards, such as an automation on a plan without automation activation.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.reach_v1_profiles_features_plan_feature_resource import ReachV1ProfilesFeaturesPlanFeatureResource
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
try:
# List plan feature access
api_response = api_instance.list_plan_feature_access_v1(profile_uuid)
print("The response of ReachProfilesApi->list_plan_feature_access_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->list_plan_feature_access_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter |
List[ReachV1ProfilesFeaturesPlanFeatureResource]
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
List[ReachV1ProfilesProfileResource] list_profiles_v1()
List Profiles
This endpoint returns all profiles available to the client, including their basic information.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.reach_v1_profiles_profile_resource import ReachV1ProfilesProfileResource
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
try:
# List Profiles
api_response = api_instance.list_profiles_v1()
print("The response of ReachProfilesApi->list_profiles_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->list_profiles_v1: %s\n" % e)This endpoint does not need any parameter.
List[ReachV1ProfilesProfileResource]
- Content-Type: Not defined
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]
ReachV1ProfilesSettingsSettingsResource update_profile_settings_v1(profile_uuid, reach_v1_profiles_settings_update_request)
Update profile settings
Change the profile's default sender and brand details.
Send only the fields to change: every omitted field keeps its value, and null or an empty
string clears a text field. The default sender is what campaigns created afterwards start
from; existing campaigns keep their own sender. sender_email is only the part before the
@, because Reach combines it with the profile's connected sending domain, so an address
outside that domain cannot be set. Connecting a sending domain is a separate endpoint and
a connected domain cannot be changed here. Returns the settings after the change.
- Bearer Authentication (apiToken):
import hostinger_api
from hostinger_api.models.reach_v1_profiles_settings_settings_resource import ReachV1ProfilesSettingsSettingsResource
from hostinger_api.models.reach_v1_profiles_settings_update_request import ReachV1ProfilesSettingsUpdateRequest
from hostinger_api.rest import ApiException
from pprint import pprint
# Configure Bearer authorization: apiToken
configuration = hostinger_api.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with hostinger_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = hostinger_api.ReachProfilesApi(api_client)
profile_uuid = '550e8400-e09b-41d4-a716-400055000000' # str | Profile uuid parameter
reach_v1_profiles_settings_update_request = hostinger_api.ReachV1ProfilesSettingsUpdateRequest() # ReachV1ProfilesSettingsUpdateRequest |
try:
# Update profile settings
api_response = api_instance.update_profile_settings_v1(profile_uuid, reach_v1_profiles_settings_update_request)
print("The response of ReachProfilesApi->update_profile_settings_v1:\n")
pprint(api_response)
except Exception as e:
print("Exception when calling ReachProfilesApi->update_profile_settings_v1: %s\n" % e)| Name | Type | Description | Notes |
|---|---|---|---|
| profile_uuid | str | Profile uuid parameter | |
| reach_v1_profiles_settings_update_request | ReachV1ProfilesSettingsUpdateRequest |
ReachV1ProfilesSettingsSettingsResource
- Content-Type: application/json
- Accept: application/json
| Status code | Description | Response headers |
|---|---|---|
| 200 | Success response | - |
| 422 | Validation error response | - |
| 401 | Unauthenticated response | - |
| 500 | Error response | - |
[Back to top] [Back to API list] [Back to Model list] [Back to README]