Enigma Vault API (1.13)

Download OpenAPI specification:Download

Welcome to Enigma Vault's API Documentation

Enigma Vault encrypts and tokenizes data of all shapes and sizes. Enigma Vault provides the following services:

  • Card Vault: encrypts and tokenizes card data. One way in and no way out except through our proxy services.
  • Data Vault: encrypts and tokenizes data. Encrypted data can be easily searched and retrieved.
  • File Vault: encrypts and stores files up to 5 GB in size.
  • Customer Vault: creates customers, generates intake URLs for secure data collection (files, cards, signatures, custom fields), and manages webhook notifications.

To get started, head on over to our AWS Marketplace page and select one of our offerings. Once you have credentials, feel free to use the PostMan app or our Swagger UI.

Version 1.13 Notes

03/09/2026

Token Format

  • Card and data vault tokens are now generated using a cryptographically secure random number generator (CSPRNG) with Base64URL encoding
  • New tokens are 22 characters (128 bits of entropy), replacing the previous 72-character double-GUID format
  • Existing tokens created in prior versions remain fully readable and functional

CardVault

Store, tokenize, and process card data without touching it.

Store a card.

When a card is stored in the vault, the original card information is not retrievable by the client without the cardvault_raw scope (contact support). The CVV's ttl is set to the same ttl as the card unless the card is stored longer than 30 minutes. If the card is stored longer than 30 minutes, the CVV's ttl is set to 30 minutes. The CVV should be deleted immediately after transacting (see the /cardvault/cards/cvv DELETE endpoint). After the CVV's ttl, the CVV automatically gets deleted. After the card's ttl, the card is deleted. To make the card permanent, leave out the ttl property. The full card number can be used through the proxy endpoint. You can get the first six, the last four, full name, and expiration from /cardvault/cards (GET). If you need Luhn tokens with custom BIN ranges or deterministic tokens, please contact support@enigmavault.io.

Authorizations:
oauth2
query Parameters
preserveFormat
boolean

If true, a Luhn passable token is returned consisting of the original first six and last four.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

Card information.

ccn
required
string <credit-card> non-empty ^\d+$

Card number.

fullName
string or null [ 2 .. 30 ] characters

Full name located on the card.

expMonth
integer or null <int32> [ 1 .. 12 ]

Expiration month.

expYear
integer or null <int32> ^\d{4}$

Expiration year.

cvv
string or null^\d{3}$|^\d{4}$

Card verification value (security code). This value is not stored permanently.

cardType
string or null [ 1 .. 30 ] characters

Type of card (amex, diners_club_carte_blanche, diners_club_international, jcb, laser, visa_electron, visa, mastercard, discover, dankort, maestro, uatp, mir, dina).

cvvTtl
integer or null <int32> [ 0 .. 1800 ]

Remaining ttl before the CVV gets deleted.

ttl
integer or null <int32> [ 60 .. 220903200 ]

The card's time to live in seconds. Once expired the card is deleted from the vault.

referenceId
string or null [ 1 .. 128 ] characters

Customer or other internal reference identifier

Responses

Request samples

Content type
application/json
{
  • "ccn": "4111111111111111",
  • "fullName": "Edward E Nigma",
  • "expMonth": 12,
  • "expYear": 9999,
  • "cvv": "123",
  • "cardType": "visa",
  • "cvvTtl": 60,
  • "ttl": 1800,
  • "referenceId": "1234567ABCD"
}

Response samples

Content type
application/json
{
  • "token": "dBjftJeZ4CVP-OB1IT_xVQ"
}

Get a card.

Provides card data. The first six and the last four are included in the response. The ttl values represent the time remaining in seconds until that item is purged. the original card information is not retreivable by the client without the cardvault_raw scope (contact support). If you have the proper scope, use the cardvault/raw/cards endpoint.

Authorizations:
oauth2
query Parameters
ephemeralKey
string <uuid>

Expiring key for temporary access.

stealthRead
boolean
Default: false

When true, dateLastAccessed does not get updated.

header Parameters
cardToken
string [ 13 .. 120 ] characters

Card token.

ccn
string <credit-card>

Card number.

referenceId
string [ 1 .. 128 ] characters

Customer or other internal app reference.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Delete a card.

Returns an empty 204 response on success.

Authorizations:
oauth2
header Parameters
cardToken
required
string [ 13 .. 120 ] characters

Card token.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{ }

Get a card. Scope cardvault_raw only.

Special endpoint to retreive raw card data. It can only be used with the cardvault_raw scope.

Authorizations:
oauth2
query Parameters
ephemeralKey
string <uuid>

Expiring key for temporary access.

stealthRead
boolean
Default: false

When true, dateLastAccessed does not get updated.

header Parameters
cardToken
string [ 13 .. 120 ] characters

Card token.

ccn
string <credit-card>

Card number.

referenceId
string [ 1 .. 128 ] characters

Customer or other internal app reference.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get an ephemeral key for a specific card token and client.

The ephemeralKey is a one time transaction use expiring key that allows an external client to use a temporary card token. The token guid, tokenGuid, is used wherever a token is normally used. The destinationClientId is a valid Enigma Vault clientId of the destination app. The time to live (ttl) is in seconds.

Authorizations:
oauth2
query Parameters
destinationClientId
required
string

Enigma Vault client granted use of the ephemeralKey.

ttl
integer <int32> [ 60 .. 1800 ]

Time to live in seconds, max of 1800 seconds. This is only applicable when the card has a ttl of 0 (permanent). Otherwise the ephemeralKey ttl is set to the card ttl.

header Parameters
cardToken
required
string [ 13 .. 120 ] characters

Reference to the vaulted card.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "ephemeralKey": "b99b4ad0-2c32-4db8-bc03-283f420a3549",
  • "tokenGuid": "6a0a72b6-07c0-422f-9829-81a41809163a"
}

Get the current ttl of a card.

The card's time to live in seconds. Once expired the card is deleted from the vault. If -1, the card lives forever until manually deleted.

Authorizations:
oauth2
query Parameters
ephemeralKey
string <uuid>

Expiring key for temporary access.

header Parameters
cardToken
required
string [ 13 .. 120 ] characters

Card token.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "cvvTtl": 1800,
  • "ttl": 1800
}

Update the card ttl.

Adjusts the time (seconds) until deletion. Additional time cannot be added to the CVV's ttl.

Authorizations:
oauth2
header Parameters
cardToken
required
string [ 13 .. 120 ] characters

Card token.

x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

New card ttl value.

ttl
required
integer <int32> [ 60 .. 1800 ]

The card's time to live in seconds. Once expired the card is deleted from the vault. If -1, card lives forever until manually deleted.

Responses

Request samples

Content type
application/json
{
  • "ttl": 1800
}

Response samples

Content type
application/json
{ }

Delete a card's cvv.

Returns an empty 204 response on success.

Authorizations:
oauth2
header Parameters
cardToken
required
string [ 13 .. 120 ] characters

Card token.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{ }

Send detokenized card data and transaction info to any gateway / upstream provider.

This endpoint allows you to use a stored card without touching the card data. Build out the request meant for the upstream url and then use the following placeholders to have the endpoint populate them with card data: ${ccn}, ${cvv}, ${fullName}, ${lastName}, ${firstName}, ${cardType}, ${mm}, ${yy}, and ${yyyy}. Supports GET/PUT/POST/DELETE. When finished transacting, delete the CVV by using the /cardvault/cards/cvv DELETE endpoint.

Authorizations:
oauth2
query Parameters
ephemeralKey
string <uuid>

Expiring key for temporary access.

header Parameters
cardToken
required
string [ 13 .. 120 ] characters

Card token.

x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

Token and gateway information.

url
required
string <uri> non-empty

URL to use on the payment gateway request.

httpMethod
required
string non-empty ^GET$|^PUT$|^POST$|^DELETE$/i

HTTP method to use on the payment gateway request.

Array of objects or null (HeadersModel)

Headers to use on the payment gateway request.

body
string or null

Body to use on the payment gateway request.

object (SigningModel)

Responses

Request samples

Content type
application/json
{
  • "httpMethod": "POST",
  • "headers": [
    ],
  • "body": "{\"createTransactionRequest\":{\"merchantAuthentication\":{\"name\":\"XXXXXXXXX\",\"transactionKey\":\"XXXXXXXXXXX\"},\"refId\":\"123456\",\"transactionRequest\":{\"transactionType\":\"authOnlyTransaction\",\"amount\":\"5.50\",\"payment\":{\"creditCard\":{\"cardNumber\":\"${ccn}\",\"expirationDate\":\"${yyyy}-${mm}\",\"cardCode\":\"999\"}},\"billTo\":{\"firstName\":\"${firstName}\",\"lastName\":\"${lastName}\",\"company\":\"Souveniropolis\",\"address\":\"14 Main Street\",\"city\":\"Pecan Springs\",\"state\":\"TX\",\"zip\":\"44628\",\"country\":\"USA\"}}}}",
  • "signing": {
    }
}

Response samples

Content type
application/json
{
  • "headers": [
    ],
  • "statusCode": 200,
  • "contentType": "application/json",
  • "body": "{\"transactionResponse\":{\"responseCode\":\"1\",\"authCode\":\"AKXD8T\",\"avsResultCode\":\"Y\",\"cvvResultCode\":\"P\",\"cavvResultCode\":\"2\",\"transId\":\"60159519275\",\"refTransID\":\"\",\"transHash\":\"\",\"testRequest\":\"0\",\"accountNumber\":\"XXXX1111\",\"accountType\":\"Visa\",\"messages\":[{\"code\":\"1\",\"description\":\"This transaction has been approved.\"}],\"transHashSha2\":\"\",\"SupplementalDataQualificationIndicator\":0,\"networkTransId\":\"0V3X5LPO079GCBFQM2B348D\"},\"refId\":\"123456\",\"messages\":{\"resultCode\":\"Ok\",\"message\":[{\"code\":\"I00001\",\"text\":\"Successful.\"}]}}"
}

Get a url to the card store UI.

The card store form allows your app to store and later use customer card data without touching it. After the cardTtl expires, the card is deleted. If the user decides to save the card, the card is stored permanently. If you're seeking to permanently store the card outside of a transaction (wallet style), set walletSave to true. When finished transacting, delete the CVV by using the /cardvault/cards/cvv DELETE endpoint. If you set walletSave to true, the buttonText and cardTtl are overriden. If walletSave is true the CVV isn't requested. If you intend to use the card in a transaction within 30 minutes, set walletSave to false. On callback, your app will receive via POST the card token within the parameter eVtoken. If the customer chooses to cancel or if the form timeouts, the evException parameter will contain the reason. For cancels, evException's value will be 'cancel'. For timeouts, evException's value will be 'timeout'. If embedFormForControl is set to true, pass 'submit' as a message over to the iframe to submit the form. On response, the parent will receive an object that consists of the status, the token, and CardModel object. There are multiple ways to integrate the card store form. You can use it within a popup, redirect, simple iframe, or iframe where the parent page has control to submit the form. You can find example code for the advanced iframe integration on GitHub.

Authorizations:
oauth2
query Parameters
showTimer
required
boolean

Show or hide the timer.

showCard
required
boolean

Show or hide the card visual.

walletSave
required
boolean

Make true to store the card in your app's wallet. This overrides the cardTtl and buttonText values. The CVV isn't requested if true. If you intend to use the card in a transaction within 30 minutes, set walletSave to false.

embedFormForControl
required
boolean

If true, it removes its buttons and any additional padding/spacing, and enables the windows interface for 2-way comms.

ttl
required
integer <int32> [ 60 .. 1800 ]

Form session time to live in seconds. After it expires, the form can no longer be used.

cardTtl
integer <int32> [ 60 .. 1800 ]

The card's time to live in seconds (60-1800 secs). Once expired the card is deleted from the vault. Use the /cardvault/cards/ttl endpoint to extend it. This field is required if walletSave is false.

preserveFormat
boolean

If true, a Luhn passable token is returned consisting of the original first six and last four.

cardTypes
string

Card types, comma delimited. Omit for any card. (amex, diners_club_carte_blanche, diners_club_international, jcb, laser, visa_electron, visa, mastercard, discover, dankort, maestro, uatp, mir, dina).

callbackUrl
string <uri>

URL the user is redirected to after storing the card.

parentUrl
string <uri>

The parent page URL. The store form uses it when embedFormForControl is true to communicate with the parent window.

pageHeader
string [ 3 .. 35 ] characters

Configurable page header.

css
string [ 3 .. 1024 ] characters

CSS to customize the web form.

language
string^(en|es|it|fr|zh-Hans|pt-BR|sr|sr-Latn|hr|me|...
Default: "en"

The language to use on the form. Supported values include: en (English), es (Spanish), it (Italian), fr (French), pt-BR (Brazilian Portuguese), zh-Hans (Simplified Chinese), sr (Serbian - Cyrillic), sr-Latn (Serbian - Latin), hr (Croatian), me (Montenegrin), bs (Bosnian), mk (Macedonian), sl (Slovenian).

submitButtonText
string [ 0 .. 20 ] characters
Default: "Save"

Text of the submit button.

header Parameters
referenceId
string [ 1 .. 128 ] characters

Customer or other internal app reference.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json

Get session info for the card store UI.

Currently returns the expiration time and current time of the session.

path Parameters
id
required
string <uuid>

Session ID

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "callbackUrl": "http://example.com",
  • "showTimer": true,
  • "autoSave": true,
  • "showCancelButton": true,
  • "showCard": true,
  • "currentTime": "2020-12-15T14:17:45.5239370Z",
  • "expiration": "2020-12-15T14:17:45.5239370Z",
  • "pageHeader": "Acme Pizza",
  • "buttonText": "Save",
  • "cardTtl": 1800,
  • "language": "en",
  • "embedFormForControl": true,
  • "parentUrl": "https://www.example.com",
  • "cardTypes": [
    ],
  • "preserveFormat": true,
  • "css": "string"
}

Store a card using the designated UI.

When a card is added to the vault, the original card information is not retrievable by the client by default. It can be used through the proxy endpoint.

path Parameters
id
required
string <uuid>

Session ID

query Parameters
saveCard
required
boolean

Card will be stored until manually deleted.

preserveFormat
boolean

If true, a Luhn passable token is returned consisting of the original first six and last four.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

Card information.

ccn
required
string <credit-card> non-empty ^\d+$

Card number.

fullName
required
string [ 2 .. 30 ] characters

Full name located on the card.

expMonth
required
integer <int32> [ 1 .. 12 ]

Expiration month.

expYear
required
integer <int32> ^\d{4}$

Expiration year.

cvv
string or null^\d{3}$|^\d{4}$

Card verification value (security code). This value is not stored permanently.

cardType
required
string [ 1 .. 30 ] characters

Type of card (visa, mastercard, etc.).

Responses

Request samples

Content type
application/json
{
  • "ccn": "4111111111111111",
  • "fullName": "Edward E Nigma",
  • "expMonth": 12,
  • "expYear": 9999,
  • "cvv": "123",
  • "cardType": "visa"
}

Response samples

Content type
application/json
{
  • "token": "dBjftJeZ4CVP-OB1IT_xVQ",
  • "cardObject": {
    }
}

Get a url to the CVV store UI.

The CVV store form allows your app to temporarily store the CVV until you're finished transacting. When finished, delete the CVV by using the /cardvault/cards/cvv DELETE endpoint. The CVV ttl is set to the card's ttl. If the card has a ttl of -1, the CVV ttl will be set to 1800 seconds. If autoSave is true, the callback will not trigger so the client app will need to verify the cvv ttl for its existence. There are multiple ways to integrate the cvv form. You can use it within a popup, redirect, simple iframe, (previous 3 can use autosave) or iframe where the parent page has control to submit the form. You can find example code for the advanced iframe integration on GitHub.

Authorizations:
oauth2
query Parameters
showTimer
required
boolean

Show or hide the timer.

showCancelButton
required
boolean

Show or hide the cancel button.

autoSave
required
boolean

If true, the buttons and header are removed, and cvv will be autosaved after user entry. The callback will not trigger so the client app will need to verify the cvv ttl for its existence.

embedFormForControl
required
boolean

If true, it removes its buttons and any additional padding/spacing, and enables the windows interface for 2-way comms.

callbackUrl
string <uri>

URL the user is redirected to after storing the card.

parentUrl
string <uri>

The parent page URL. The store form uses it when embedFormForControl is true to communicate with the parent window.

pageHeader
string [ 3 .. 35 ] characters

Configurable page header.

css
string [ 3 .. 1024 ] characters

CSS to customize the web form.

language
string^(en|es|it|fr|zh-Hans|pt-BR|sr|sr-Latn|hr|me|...
Default: "en"

The language to use on the form. Supported values include: en (English), es (Spanish), it (Italian), fr (French), pt-BR (Brazilian Portuguese), zh-Hans (Simplified Chinese), sr (Serbian - Cyrillic), sr-Latn (Serbian - Latin), hr (Croatian), me (Montenegrin), bs (Bosnian), mk (Macedonian), sl (Slovenian).

submitButtonText
string [ 0 .. 20 ] characters
Default: "Submit"

Text of the submit button.

header Parameters
cardToken
required
string [ 13 .. 120 ] characters

Card token.

x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json

Get session info for the CVV store UI.

Currently returns the expiration time and current time of the session.

path Parameters
id
required
string <uuid>

Session ID

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "callbackUrl": "http://example.com",
  • "showTimer": true,
  • "autoSave": true,
  • "showCancelButton": true,
  • "showCard": true,
  • "currentTime": "2020-12-15T14:17:45.5239370Z",
  • "expiration": "2020-12-15T14:17:45.5239370Z",
  • "pageHeader": "Acme Pizza",
  • "buttonText": "Save",
  • "cardTtl": 1800,
  • "language": "en",
  • "embedFormForControl": true,
  • "parentUrl": "https://www.example.com",
  • "cardTypes": [
    ],
  • "preserveFormat": true,
  • "css": "string"
}

Add the CVV from the CVV store UI.

path Parameters
id
required
string <uuid>

Session ID

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

The CVV

cvv
required
string non-empty ^\d{3}$|^\d{4}$

Card verification value (security code). This value is not stored permanently.

Responses

Request samples

Content type
application/json
{
  • "cvv": "123"
}

Response samples

Content type
application/json
{
  • "cvvTtl": 1800,
  • "ttl": 1800
}

Delete the CVV when the user clears out the field on the UI.

path Parameters
id
required
string <uuid>

Session ID

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{ }

Get a listing of all supported cultures and currencies.

Authorizations:
oauth2
query Parameters
cultureCode
string

ISO 639-1 (language) and ISO 3166-1 (country) code.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Tokenize a card via Twilio Pay.

Receives card data from Twilio's Pay Generic Pay Connector and returns a token. This endpoint uses HTTP Basic Auth (not JWT). Set the Authorization header to Basic base64(clientId:password). Generate your Twilio Pay password in the Enigma Vault developer portal under Twilio Pay settings, then configure Twilio's Generic Pay Connector with your clientId as the username, your password, and this endpoint URL.

Authentication: HTTP Basic Auth — Authorization: Basic base64(clientId:password). Contact support@enigmavault.io or use the developer portal to enable Twilio Pay and set a password.

Standard fields (sent automatically by Twilio):

  • method — Must be "tokenize"
  • transaction_id — Twilio's idempotency token
  • cardnumber — Card number (required)
  • cvv — Security code (stored with a 30-minute TTL, or matches card TTL if card TTL is less than 1800s)
  • expiry_month — MM format
  • expiry_year — YY or YYYY format
  • postal_code — Zip/postal code

Custom parameters (pass via Parameter noun in TwiML):

  • full_name — Cardholder name
  • card_type — Card brand override (auto-detected from BIN if omitted: visa, mastercard, amex, discover)
  • reference_id — Customer or internal reference identifier (max 128 characters)
  • ttl — Card time-to-live in seconds (60–220,903,200). Omit for permanent storage
  • preserve_format — Set to true for Luhn-passable tokens using the card's first six and last four

TwiML example:

<Pay paymentConnector="enigma_vault" tokenType="one-time"
     action="https://your-app.example.com/pay-status">
  <Parameter name="full_name" value="Edward Nigma" />
  <Parameter name="card_type" value="visa" />
  <Parameter name="reference_id" value="CUST-12345" />
  <Parameter name="ttl" value="3600" />
  <Parameter name="preserve_format" value="true" />
</Pay>

Features:

  • Preserve-format tokens (Luhn-passable) via preserve_format parameter or BIN range config
  • Deterministic dedup when CardVaultDeterministic is enabled — same card returns same token
  • All responses use Twilio's expected format: token_id, error_code, error_message
Request Body schema: application/json

Twilio Pay request body sent by the Generic Pay Connector.

method
string or null

Transaction method. Must be "tokenize".

transaction_id
string or null

Twilio's idempotency token for the transaction.

cardnumber
string or null

Card number.

expiry_month
string or null

Expiration month (MM).

expiry_year
string or null

Expiration year (YY or YYYY).

cvv
string or null

Card verification value (security code). Stored temporarily with a 30-minute TTL (or matches card TTL if card TTL is less than 1800 seconds).

postal_code
string or null

Cardholder's postal/zip code.

object or null

Custom parameters passed via the TwiML Parameter noun. Supported keys: full_name, card_type, reference_id.

Responses

Request samples

Content type
application/json
{
  • "method": "tokenize",
  • "transaction_id": "txn-abc123",
  • "cardnumber": "4111111111111111",
  • "expiry_month": "12",
  • "expiry_year": "2028",
  • "cvv": "123",
  • "postal_code": "94111",
  • "parameters": {
    }
}

Response samples

Content type
application/json
{
  • "token_id": "4111117302171111",
  • "error_code": "400",
  • "error_message": "Card is expired"
}

CustomerVault

Create and manage customers for secure data intake (files, cards, signatures, custom fields). Configure webhooks to receive real-time intake event notifications.

Create a new customer with an external ID.

Creates a customer record with your external GUID. Returns the new customerId and an intake URL where end customers can securely submit files, cards, signatures, and custom fields. If a customer with the same externalId already exists, returns 409 Conflict.

Authorizations:
oauth2
header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json
externalId
string or null
firstName
string or null
lastName
string or null
email
string or null
phone
string or null
timeZone
string or null

Responses

Request samples

Content type
application/json
{
  • "externalId": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "email": "string",
  • "phone": "string",
  • "timeZone": "string"
}

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Get customer status by internal or external ID.

Returns intake status for the specified customer. By default returns lightweight counts (fileCount, cardCount, signatureCount, fieldCount) suitable for polling. Add ?detail=true to get item-level metadata: file names/sizes, card tokens/last four, signature timestamps, and field names. The {id} parameter accepts either the internal 32-character customerId or your external ID.

Authorizations:
oauth2
path Parameters
id
required
string
query Parameters
detail
boolean
Default: false
header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Delete a customer.

Removes a customer record. This does not delete files or card tokens that were collected during intake — those remain in their respective vaults. The {id} parameter accepts either the internal 32-character customerId or your external ID.

Authorizations:
oauth2
path Parameters
id
required
string
header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
No sample

Get intake URL for an existing customer.

Returns the intake page URL for the specified customer. Share this URL with your end customer so they can securely submit files, card information, signatures, and custom fields. The {id} parameter accepts either the internal 32-character customerId or your external ID.

Authorizations:
oauth2
path Parameters
id
required
string
header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

Get webhook configuration.

Returns the current webhook configuration including the URL and enabled status. The webhook secret is write-only and is never included in responses. Configure webhooks to receive real-time notifications when intake events occur (file uploads, card submissions, signature captures, custom field saves).

Authorizations:
oauth2
header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Update webhook configuration.

Updates webhook URL, secret, and/or enabled flag. Only fields included in the request are updated — omitted fields are left unchanged. The webhookUrl must be a valid HTTPS URL. The webhookSecret is used to compute HMAC-SHA256 signatures on webhook payloads (sent in the X-Webhook-Signature header) so you can verify authenticity. The secret is write-only and never returned in responses.

Authorizations:
oauth2
header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json
webhookUrl
string or null
webhookSecret
string or null
webhookEnabled
boolean or null

Responses

Request samples

Content type
application/json
{
  • "webhookUrl": "string",
  • "webhookSecret": "string",
  • "webhookEnabled": true
}

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string",
  • "property1": null,
  • "property2": null
}

DataVault

Store and tokenize plaintext data.

Store a secret.

Supports up to 5,000 plaintext objects per request. Plaintext strings must be less than 1000 characters in length. The customIdentifier attribute ties your unencrypted data to the tokens. The customIdentifier is not stored within the vault.

Authorizations:
oauth2
query Parameters
deterministicToken
boolean

Returns a deterministic token instead of an arbitrary/unique token

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

Your secrets to vault.

Array
plaintext
required
string [ 1 .. 1000 ] characters

Secret text to vault.

customIdentifier
string or null [ 0 .. 100 ] characters

Client provided identifier tying the tokens back to some other client data.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Get a secret by token.

The ephemeralKey is a one time use expiring key that allows an external client to obtain the token's secret. To generate one, use the datavault/secrets/ephemeralKey endpoint.

Authorizations:
oauth2
path Parameters
token
required
string [ 13 .. 120 ] characters

Reference to the vaulted secret.

query Parameters
ephemeralKey
string <uuid>

One time use expiring key.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "plaintext": "Super secret info"
}

Delete a secret.

Authorizations:
oauth2
path Parameters
token
required
string [ 13 .. 120 ] characters

Reference to the vaulted secret.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{ }

Search by plaintext.

Exact matches will only be returned and is case sensitive. This endpoint will not return a deterministic token.

Authorizations:
oauth2
header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

Text to search within the vault. Exact matches will only be returned and is case sensitive.

plaintext
required
string [ 1 .. 1000 ] characters

Secret text.

Responses

Request samples

Content type
application/json
{
  • "plaintext": "Super secret info"
}

Response samples

Content type
application/json
[
  • {
    }
]

Get an ephemeral key for a specific token and client.

The ephemeralKey is a one time use expiring key that allows an external client to obtain the token's secret. The destinationClientId is a valid Enigma Vault clientId of the destination app. The time to live (ttl) is in seconds. This endpoint does not currently work with deterministic tokens.

Authorizations:
oauth2
path Parameters
token
required
string [ 13 .. 120 ] characters

Reference to the vaulted secret.

query Parameters
destinationClientId
required
string

Enigma Vault client granted use of the ephemeralKey.

ttl
required
integer <int32> [ 1 .. 300 ]

Time to live in seconds, max of 300.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "ephemeralKey": "b99b4ad0-2c32-4db8-bc03-283f420a3549",
  • "tokenGuid": "6a0a72b6-07c0-422f-9829-81a41809163a"
}

Get a URL to the data store form with a single field.

The data store form allows your application to securely collect and store sensitive customer data—such as Social Security numbers, driver's license numbers, and other personal identifiers—without directly handling it. When the user completes the form, your application will receive the tokenized result through the windows API. On success or failure, messaging will be sent to the parent page indicating the status. You may integrate the form through a controlled iframe setup. Send the message 'submit' to the iframe to trigger submission. The response will be posted to the parent with a payload containing the status and token. Example integration patterns can be found on GitHub.

Authorizations:
oauth2
query Parameters
ttl
required
integer <int32> [ 60 .. 86400 ]

Form session time to live in seconds. After it expires, the form can no longer be used.

parentUrl
string <uri>

The parent page URL. The store form uses it when embedFormForControl is true to communicate with the parent window.

inputRegex
required
string [ 2 .. 256 ] characters

Regular expression to validate the input against.

css
string [ 3 .. 1024 ] characters

CSS to customize the web form.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json

Get session info for the data store UI.

Currently returns the expiration time and current time of the session.

path Parameters
id
required
string <uuid>

Session ID

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "currentTime": "2020-12-15T14:17:45.5239370Z",
  • "expiration": "2020-12-15T14:17:45.5239370Z",
  • "parentUrl": "https://www.example.com",
  • "inputRegex": "Incorrect input",
  • "css": "string"
}

Tokenizes a secret using the designated UI.

Tokenizes a secret using the designated UI.

path Parameters
id
required
string <uuid>

Session ID

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Request Body schema: application/json

Data.

plaintext
required
string [ 1 .. 1000 ] characters

Secret text to vault.

customIdentifier
string or null [ 0 .. 100 ] characters

Client provided identifier tying the tokens back to some other client data.

Responses

Request samples

Content type
application/json
{
  • "plaintext": "Super secret info",
  • "customIdentifier": "123"
}

Response samples

Content type
application/json
{
  • "token": "dBjftJeZ4CVP-OB1IT_xVQ",
  • "customIdentifier": "123"
}

FileVault

Store and tokenize files of all types and sizes.

Get a url to upload a file.

The url is used to upload (PUT) a file into the vault. The url has an exipration of five minutes. The file size cannot exceed 5 gigabytes. A websocket url is provided so that the status of the file can be tracked in realtime.

Authorizations:
oauth2
query Parameters
contentType
required
string [ 3 .. 255 ] characters

The MIME type associated with the file.

fileExtension
required
string^[0-9a-zA-Z]{1,10}$

The file extension without the leading .

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "fileName": "b99b4ad0-2c32-4db8-bc03-283f420a3549.pdf",
  • "wsUrl": "wss://filestatus-api.enigmavault.io?fileName=b99b4ad0-2c32-4db8-bc03-283f420a3549.pdf&sessionId=abcdefg"
}

Get the status of a file. Deprecated

This endpoint has been deprecated because the file status is now provided through a websocket API.

Authorizations:
oauth2
path Parameters
fileName
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]...

Tokenized file name.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "fileStatus": "string"
}

Get a url to decrypt and download the file.

The url is used to download the file out of the vault. The url has an exipration of five minutes. When aSync is set to true for large files, a websocket API url is returned so that the file status can be monitored in real time. When the file is finished decrypting, the download url is provided through the websocket connection.

Authorizations:
oauth2
path Parameters
fileName
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]...

Tokenized file name.

query Parameters
aSync
required
boolean

Set to true to decrypt large files; you'll use the websocket API for notifications.

ephemeralKey
string <uuid>

One time use expiring key.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json

Delete a file.

On successful deletion, a 204 response is returned.

Authorizations:
oauth2
path Parameters
fileName
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]...

Tokenized file name.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
No sample

Get an ephemeral key for a specific fileName and client.

The ephemeralKey is a one time use expiring key that allows an external client to obtain a download url. The destinationClientId is a valid Enigma Vault clientId of the destination app. The time to live (ttl) is in seconds.

Authorizations:
oauth2
path Parameters
fileName
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]...

Tokenized file name.

query Parameters
destinationClientId
required
string

Enigma Vault client granted use of the ephemeralKey.

ttl
required
integer <int32> [ 1 .. 300 ]

Time to live in seconds, max of 300.

header Parameters
x-api-version
required
string
Default: 1.13

The requested API version

Responses

Response samples

Content type
application/json
{
  • "ephemeralKey": "b99b4ad0-2c32-4db8-bc03-283f420a3549",
  • "tokenGuid": "6a0a72b6-07c0-422f-9829-81a41809163a"
}