Connections
Manage email domain connections and outbound verification.
Connections represent email domains linked to your account. They handle inbound email routing and outbound domain verification (DNS records in AWS SES: domain verification TXT, DKIM, SPF and DMARC). Connection IDs start with con_.
List connectionsGET/v1/connections
Permission: read. Returns every connection of the account, newest first, each with inboxes_count (non-deleted inboxes linked to it). This endpoint is not paginated.
Get a connectionGET/v1/connections/{id}
Permission: read. Returns { connection } with all its fields (including dns_records, outbound_domain, outbound_verification_status and outbound_dns_records) plus inboxes_count. 404 if the connection is not in your account.
Create a connectionPOST/v1/connections
Permission: write. Returns 201 with { connection }. The connection starts with verification_status pending and is_active true. Returns 400 if display_name is missing and 409 if the domain is already used by any connection on the platform.
| Field | Type | Required | Description |
|---|---|---|---|
| display_name | string | Yes | Display name for the connection. |
| domain | string | No | Email domain. Defaults to {account_slug}.tickos.dev. |
| verification_type | string | No | inbound_only or full_verified. Default: inbound_only. Other values are rejected by the database and currently return 500. |
| connection_type | string | No | Default: email. |
Update a connectionPATCH/v1/connections/{id}
Permission: write. Accepts display_name (non-empty), is_active (boolean) and metadata (object; replaces the stored metadata entirely). Domain and verification status cannot be changed via PATCH. Returns { connection }; 400 on invalid values or no fields, 404 if not found.
Delete a connectionDELETE/v1/connections/{id}
Permission: admin. Permanently deletes the connection and returns { "deleted": true, "id": "..." }. Returns 409 if it still has linked (non-deleted) inboxes. If an outbound domain is configured, its identity is also removed from AWS SES (an SES failure does not block the delete).
Set up outbound domainPOST/v1/connections/{id}/outbound-domain
Permission: write. Body: { "domain": "yourdomain.com" }. Creates the domain identity in AWS SES (DKIM 2048-bit), saves it on the connection with outbound_verification_status pending, and returns the DNS records to add at your DNS provider. tickos.dev domains are not allowed (400). Returns 404 if the connection is not in your account and 409 if the domain is already used by another TickOS workspace.
Add every record: the SES domain verification TXT record (verification_record), the DKIM CNAME records (usually three), SPF and DMARC. The same records are stored in connection.outbound_dns_records, so you can read them again later with GET /v1/connections/{id}.
Verify DNS recordsPOST/v1/connections/{id}/verify-outbound
Permission: read. Checks the domain in AWS SES, updates outbound_verification_status on the connection (and outbound_verified_at the first time it is verified) and returns { connection, verification_status, ses_status }. Returns 400 if the connection has no outbound domain and 404 if it is not in your account.
- verified -- SES reports the domain verified for sending and DKIM status SUCCESS.
- failed -- SES reports verification or DKIM as FAILED.
- pending -- anything else (DNS not propagated yet, temporary failure, not started).
- ses_status -- raw SES result: { domain, verification_status, dkim_status, dkim_tokens } where the statuses are PENDING, SUCCESS, FAILED, TEMPORARY_FAILURE or NOT_STARTED.
Email DNS instructionsPOST/v1/connections/{id}/send-dns-instructions
Permission: write. Emails the outbound DNS records of the connection, with setup instructions, to someone else (for example the person who manages the DNS). The email is sent from no-reply@tickos.dev with your brand name as the sender name. By default it uses your account name and logo; send branding to white-label it.
| Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Recipient email. | |
| branding | object | No | Optional branding for the email. |
| branding.logo_url | string | No | Logo URL. Default: account logo. |
| branding.brand_name | string | No | Brand name, also used as sender name. Default: account name. |
| branding.primary_color | string | No | Hex color (e.g. #2D84C7). Default: #111827. |
| branding.support_email | string | No | Support contact shown in the email. |
Returns 400 if email is invalid, branding is not an object, primary_color is not a hex color, support_email is invalid, or the connection has no outbound domain set up yet (call outbound-domain first). Returns 404 if the connection is not in your account and 500 if the email could not be sent.