SendlySendly
API ReferenceCompatibility

Send mail (SendGrid v3 dialect)

POST
/api/compat/sendgrid/v3/mail/send

Drop-in for SendGrid's POST /v3/mail/send. Authenticate as SendGrid does, with Authorization: Bearer <sendly key> (the legacy x-api-key-token header is also read). A pk_ send-only key is accepted. The key must hold emails:send.

Each personalizations entry is translated to one native send. The whole fan-out is validated, and content review runs over it, before any send runs; the sends themselves then run in order, so a later send that fails can leave the earlier ones queued. At most 100 personalizations are accepted per request, as on the native batch; more answers 400 and nothing is sent. Success is 202 with an EMPTY body and an X-Message-Id header carrying the first queued email id — the semantics @sendgrid/mail expects. There is no Idempotency-Key support on this route.

A feature the vendor offers that Sendly has no equivalent for is refused with its own status (code COMPAT_UNSUPPORTED) rather than silently dropped.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key authentication. Use a sk_* (FULL) or pk_* (SENDING_ONLY) key as the bearer token. Public keys (pk_*) are restricted to the email-send endpoints and the self-serve list subscribe/unsubscribe pair; every other endpoint — event tracking included — answers 403 for them. In scope terms (used by /api/v1/* operations): FULL keys hold every scope; SENDING_ONLY keys hold only emails:send.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

A SendGrid v3 mail/send body.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/compat/sendgrid/v3/mail/send" \  -H "Content-Type: application/json" \  -d '{    "personalizations": [      {        "to": [          {            "email": "string"          }        ]      }    ],    "from": {      "email": "string"    },    "content": [      {        "type": "string",        "value": "string"      }    ]  }'
Empty
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}
{
  "errors": [
    {
      "message": "string",
      "field": null,
      "help": null
    }
  ]
}