Skip to content

Verification API

The Verification API lets you confirm that a consumer gave consent, look up certificate details, retain session data for compliance, and process opt-out revocations. Every verification check costs $0.015 and is billed from your prepaid wallet on a pay-as-you-go basis.

https://api.econsent.org

All endpoints (except Opt-Out) require a Bearer token in the Authorization header:

Authorization: Bearer YOUR_API_TOKEN

The Opt-Out endpoint is unauthenticated but rate-limited to 10 requests per minute per IP address.


Check whether specific consent text exactly matches what was recorded in a certificate. Use this when you need to prove that a consumer agreed to a particular disclosure word-for-word, for example during a TCPA compliance audit.

ParameterTypeRequiredDescription
certificate_idstringYesThe certificate ID to verify
company_idstringYesYour company ID
consentstringYesThe exact consent text to match against the certificate
originator_company_idstringNoThe company that originally captured consent (for third-party verification)
FieldTypeDescription
validbooleanWhether the consent text matched a record in the certificate
consent_opt_instringISO 8601 timestamp of when consent was given
originstringThe source where consent was captured (e.g., form URL)
consent_typesarrayList of consent type labels found in the certificate
verification_typestringfirst_party if you captured the consent, third_party if another company did
Terminal window
curl -X POST https://api.econsent.org/verify/match \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"certificate_id": "EC-abc123-def456",
"company_id": "comp-abc",
"consent": "I agree to receive marketing calls and text messages from Example Corp."
}'
{
"valid": true,
"consent_opt_in": "2026-03-18T10:30:00Z",
"origin": "https://example.com/signup",
"consent_types": ["tcpa-express-consent"],
"verification_type": "first_party"
}

Search for a keyword or phrase within the recorded consent text. This is useful when you need to check whether a certificate contains a particular term (like a company name or product) but do not have the full consent wording.

ParameterTypeRequiredDescription
certificate_idstringYesThe certificate ID to verify
company_idstringYesYour company ID
termstringYesThe search term or phrase to look for within the consent text
originator_company_idstringNoThe company that originally captured consent (for third-party verification)
FieldTypeDescription
validbooleanWhether the term was found in the certificate’s consent text
consent_opt_instringISO 8601 timestamp of when consent was given
originstringThe source where consent was captured
verification_typestringfirst_party or third_party
Terminal window
curl -X POST https://api.econsent.org/verify/partial-match \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"certificate_id": "EC-abc123-def456",
"company_id": "comp-abc",
"term": "marketing calls"
}'
{
"valid": true,
"consent_opt_in": "2026-03-18T10:30:00Z",
"origin": "https://example.com/signup",
"verification_type": "first_party"
}

POST /verify/certificate-info: Certificate Info

Section titled “POST /verify/certificate-info: Certificate Info”

Retrieve metadata about a certificate without performing a consent text match. Use this to check whether a certificate exists, when it was created, and how many consent records it contains.

ParameterTypeRequiredDescription
certificate_idstringYesThe certificate ID to look up
company_idstringYesYour company ID
property_idstringYesYour property ID
Terminal window
curl -X POST https://api.econsent.org/verify/certificate-info \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"certificate_id": "EC-abc123-def456",
"company_id": "comp-abc",
"property_id": "prop-xyz"
}'
{
"valid": true,
"certificate_id": "EC-abc123-def456",
"created_timestamp": "2026-03-18T10:30:00Z",
"has_consents": true,
"consent_count": 3,
"events_combined": {}
}
FieldTypeDescription
validbooleanWhether the certificate was found
certificate_idstringThe certificate ID
created_timestampstringISO 8601 timestamp of when the certificate was created
has_consentsbooleanWhether the certificate contains any consent records
consent_countnumberNumber of consent records in the certificate
events_combinedobjectCombined event data from the session

POST /verify/session/:company_id: Retain Session

Section titled “POST /verify/session/:company_id: Retain Session”

Mark a session for long-term retention. By default, raw session recordings are stored for a limited period. Call this endpoint to keep a session’s recording data available beyond the default retention window. This is useful when you know a session may be needed for future litigation or audits.

A session retention fee is charged from your wallet.

ParameterTypeRequiredDescription
company_idstringYesYour company ID (in the URL path)
ParameterTypeRequiredDescription
session_idstringYesThe session ID to retain
Terminal window
curl -X POST https://api.econsent.org/verify/session/comp-abc \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"session_id": "sess-12345"
}'

POST /verify/certificate/:company_id: Retain Certificate

Section titled “POST /verify/certificate/:company_id: Retain Certificate”

Mark a certificate for long-term retention. Similar to session retention, this ensures the certificate and its associated data remain accessible beyond the default retention period.

A certificate retention fee is charged from your wallet.

ParameterTypeRequiredDescription
company_idstringYesYour company ID (in the URL path)
ParameterTypeRequiredDescription
session_idstringYesThe session ID associated with the certificate to retain
Terminal window
curl -X POST https://api.econsent.org/verify/certificate/comp-abc \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"session_id": "sess-12345"
}'

Allow consumers to revoke their consent. This endpoint is unauthenticated so it can be called from consumer-facing opt-out pages, but it is rate-limited to 10 requests per minute per IP to prevent abuse.

You must provide at least one identifier (certificate_id, email, or mobile) so the system knows which consent records to revoke.

ParameterTypeRequiredDescription
company_idstringYesThe company ID the consent was given to
certificate_idstringNoRevoke a specific certificate
emailstringNoRevoke all certificates matching this email
mobilestringNoRevoke all certificates matching this phone number
reasonstringNoOptional reason for the revocation
Terminal window
curl -X POST https://api.econsent.org/opt-out \
-H "Content-Type: application/json" \
-d '{
"company_id": "comp-abc",
"email": "consumer@example.com",
"reason": "No longer interested"
}'
{
"success": true,
"revoked": 2,
"certificates": ["EC-abc123-def456", "EC-ghi789-jkl012"],
"timestamp": "2026-03-18T10:35:00Z"
}
FieldTypeDescription
successbooleanWhether the revocation was processed
revokednumberNumber of certificates that were revoked
certificatesarrayList of certificate IDs that were revoked
timestampstringISO 8601 timestamp of when the revocation was processed

To verify a certificate that was captured by a different company, include the originator_company_id field in your exact match or partial match request. This tells the API that you are verifying consent that was originally collected by another organization.

{
"certificate_id": "EC-abc123-def456",
"company_id": "your-company-id",
"consent": "I agree to marketing emails",
"originator_company_id": "originating-company-id"
}

For third-party verification to succeed, the originating company must:

  1. Enable third_party_verification_enabled on their account.
  2. Add the verifying company’s ID to their authorized_third_parties list.

If either condition is not met, the API returns 403 Forbidden.


The Verification API automatically checks whether a certificate has been revoked before returning results. If the consumer has opted out, the verification endpoints return:

{
"status": 403,
"error": "This session has opted out"
}

StatusMeaningExample
400Bad request: missing or malformed required fieldsMissing certificate_id
401Unauthorized: invalid or missing Bearer tokenExpired API token
403Forbidden: certificate opted out, or unauthorized third-partyConsumer revoked consent
404Not found: certificate does not existInvalid certificate_id
429Rate limited: too many requestsExceeded 10/min on opt-out endpoint

ActionCost
Verification check (exact match, partial match)$0.015 per check
Session retentionCharged from wallet
Certificate retentionCharged from wallet
Opt-out revocationFree

All verification costs are deducted from your prepaid wallet balance. You can top up your wallet from the dashboard.