# Submit a certified SMS

Endpoint: POST /v1/EviSms/Submit
Version: 1.0
Security: basicAuth

## Header parameters:

  - `X-Evi-IdempotencyToken` (string)
    Optional idempotency token (UUID recommended) to prevent duplicate submissions on retry. A replay of a cached 200 OK submission returns 202 Accepted. Responses 400, 401, 408, 409, 429, and 5xx are not cached for replay.

## Request fields (application/json):

  - `Text` (string, required)

  - `LookupKey` (string)

  - `IssuerName` (string)
    Legal name or short identifier for the sending organisation, recorded in the certification evidence. This is not the sender shown in the recipient's inbox (that sender is configured at the account level).

  - `Recipient` (object, required)

  - `Recipient.LegalName` (string)

  - `Recipient.PhoneNumber` (string, required)
    International mobile number.

  - `Options` (object)

  - `Options.CertificationLevel` (string)
    Supported values include Standard, Advanced, and their regional variants, such as Standard_EU or Advanced_EU. Availability depends on the account.
    Enum: "Standard", "Advanced", "Standard_CO", "Standard_CR", "Standard_EC", "Standard_EU", "Standard_MX", "Standard_PE", "Advanced_CO", "Advanced_CR", "Advanced_EC", "Advanced_EU", "Advanced_MX", "Advanced_PE"

  - `Options.CostCentre` (string)

  - `Options.DeliveryChannels` (array)
    Enum: "RCS", "SMS"

  - `Options.AffidavitKinds` (array)
    Enum: "Submitted", "SubmittedAdvanced", "TransmissionResult", "DeliveryResult", "Read", "Closed", "ClosedAdvanced", "Complete", "CompleteAdvanced", "Event"

  - `Options.TimeToLive` (integer)
    The time in minutes during which the platform will attempt delivery before the message expires. Range: 60-86,400 (1 minute to 60 days).

  - `Options.Language` (string)
    Enum: "en", "es", "ca", "it", "pt", "pt-BR", "fr", "de", "ro"

  - `Options.AffidavitLanguage` (string)
    Enum: "en", "es", "ca", "it", "pt", "pt-BR", "fr", "de", "ro", "el"

  - `Options.EvidenceAccessControlMethod` (string)
    Controls how recipients access the evidence record. Supported values: Public, Challenge, AutoChallenge. When omitted, the account's configured default method applies.
    Enum: "AutoChallenge", "Public", "Challenge"

  - `Options.EvidenceAccessControlChallenge` (string)

  - `Options.EvidenceAccessControlChallengeResponse` (string)

  - `Options.OnlineRetentionPeriod` (integer)

  - `Options.NotaryRetentionPeriod` (integer)

  - `Options.NotaryProfile` (string)

  - `Options.PushNotificationFilter` (array)
    State transitions that trigger a push notification callback to PushNotificationUrl. AffidavitPublished is a platform meta-event that fires when affidavit generation completes — it is not a lifecycle state.
    Enum: "Ready", "Sent", "Dispatched", "Delivered", "Read", "Failed", "Closed", "AffidavitPublished"

  - `Options.PushNotificationUrl` (string)

  - `Options.PushNotificationExtraData` (string)

  - `Options.DeliveryAppearance` (string)
    Controls the visual appearance of the delivery page. Certified is the branded certified-delivery appearance; AsIs is a plain appearance without certification branding.
    Enum: "Certified", "AsIs"

  - `Options.OwnerNotificationTemplate` (string)
    Identifier of an enabled custom template used for the issuer's status notification email. See [Using communication templates from the API](../../dev/templates.md).

  - `Options.OwnerNotificationTemplateValues` (object)
    Key-value pairs supplying values for the user variables declared in OwnerNotificationTemplate.

  - `Options.LtaStorage` (boolean)
    When true, the evidence for this transaction is stored in Namirial Archive during post-close processing after tracking reaches Closed. Requires LTA to be enabled for the site. OnlineRetentionPeriod separately controls online accessibility.

## Response 200 fields (application/json):

  - `eviId` (string, required)

## Response 202 fields (application/json):

  - `eviId` (string, required)

## Response 400 fields (application/json):

  - `responseStatus` (object)

  - `responseStatus.errorCode` (string)

  - `responseStatus.message` (string)

  - `responseStatus.errors` (array)


## Response 401 fields

## Response 403 fields

## Response 409 fields
