Supported Countries: The Compliance API currently supports India only. Support for additional countries will be added in future releases.
subaccount in the data JSON. Get and List take the same parameter as a filter.
Every response includes an api_id field for request tracing.
The Requirements Object
Describes what documents and fields are needed for compliance in a specific country, number type, and user type combination. Always call this first before creating a compliance application.Attributes
List of required document types. Each object includes
document_type_id, name, description, proof_required, and required_fields.Document Type Object
Each entry indocument_types:
Required Field Object
Each entry inrequired_fields:
Get Requirements
Query compliance requirements before creating a compliance record.Query Parameters
Example
Response (200 OK)
The Compliance Object
Represents a compliance application combining end user information and documents for regulatory review.Attributes
Auth ID of the subaccount this application was filed for. Not returned for applications filed for your main account, or if the subaccount has since been deleted.
End User Object
Returned when usingexpand=end_user.
Address fields are flat (e.g.,
address_line1, city), not nested under an address object.Document Object
Returned when usingexpand=documents.
Linked Number Object
Returned when usingexpand=linked_numbers.
Create a Compliance Application
Create end user, upload documents, and auto-submit the compliance application in a single call.multipart/form-data
The request consists of:
- A
datafield containing a JSON string with compliance details - File fields using the pattern
documents[0].file,documents[1].file, etc.
File Upload Rules
- Required when the document type has
proof_required=true(from Requirements response) - Not needed when
proof_required=false - Supported formats: PDF, JPEG, PNG (validated server-side by content type, not just extension)
- Max file size: 5 MB per file
- Max filename length: 99 characters
The data JSON Structure
HTTPS URL to receive status change notifications (accepted, rejected). Plivo sends a v3 signature in the request header for verification.
HTTP method for the callback. Values:
GET, POST. Default: POST. Requires callback_url to be set.Auth ID of one of your subaccounts. Files the application, and its end user, for that subaccount instead of your main account. Use your main account credentials. If omitted, the application is filed for your main account.
Example
"subaccount": "SAXXXXXXXXXXXXXXXXXX" to the data JSON and call with your main account credentials. The response is the same.
Response (201 Created)
Get a Compliance Application
Retrieve details of a specific compliance application.Query Parameters
Withoutexpand, only top-level fields are returned (faster response). With expand, the corresponding nested objects are included.
Auth ID of a subaccount. Use your main account credentials.
- A subaccount’s Auth ID: returns the application only if it was filed for that subaccount; otherwise returns
404. - Empty value (
subaccount=): returns the application only if it was filed for your main account.
Example
Response (200 OK)
Without expand:expand=end_user,documents,linked_numbers:
List Compliance Applications
Returns a paginated list of compliance applications for the account.Query Parameters
Filter by the account an application was filed for. Use your main account credentials.
- A subaccount’s Auth ID: only applications filed for that subaccount.
- Empty value (
subaccount=): only your main account’s applications. - Omitted: all applications, including those filed for your subaccounts.
Example
Response (200 OK)
Update a Compliance Application
Update a rejected compliance application and automatically resubmit it for review.multipart/form-data (same format as Create)
Restrictions
- Only applications with
status=rejectedcan be updated. Any other status returns error codecompliance_not_editable. end_user.typecannot be changed.subaccountcannot be changed. Leave it out, or pass the value the application already has.- Documents are fully replaced. All previously uploaded documents are removed and new ones are created. You must re-upload all documents, not just the ones that need correction.
Arguments
Example
Response (200 OK)
Returns the updated compliance object withstatus: "submitted" (auto-resubmitted for review).
Delete a Compliance Application
Soft-delete a compliance application.Restrictions
- Applications with
status=expiredcannot be deleted. - All other statuses (
submitted,accepted,rejected,suspended) can be deleted.
Example
Response (200 OK)
Bulk Link Numbers to Compliance
Link multiple phone numbers to their respective compliance applications in a single request.application/json
Requirements
- Compliance application must be in
acceptedstatus - Phone number country and type must match the compliance requirement
- Application must use the latest requirement version
- An application filed for a subaccount can be linked only to that subaccount’s numbers
Arguments
Example
Response (200 OK)
Status Flow
Status flow
- CreatePOST
- SubmittedUnder reviewAccepted
- Accepted
- Link Numbers
PATCH) to fix the flagged details — this auto-resubmits it for review.
Error Handling
Error Response Format
All error responses use a flat two-field format withapi_id for request tracing and error containing an actionable message. This is consistent with the standard Plivo API error pattern.
Common Error Messages
HTTP Status Codes
Callbacks
When you provide acallback_url during creation or update, Plivo sends a webhook notification when the compliance application status changes (for example, from submitted to accepted or rejected).
- Method: Uses the
callback_methodyou specified (GETorPOST, defaultPOST). - Signature: Plivo includes a v3 signature in the request header for verification. Use Plivo’s signature validation to verify the callback is authentic.
- HTTPS required: The
callback_urlmust use HTTPS. - No subaccount in the payload: Callbacks don’t include
subaccount. To route callbacks per customer, set a differentcallback_urlon each subaccount’s application when you create it.
Rate Limits
Rate limit headers are included in all responses:
India Requirements
For Indian local business numbers (country_iso=IN, number_type=local, user_type=business), the following documents are required:
1. Registration Certificate (file upload required)
Certificate of Incorporation issued by the Ministry of Corporate Affairs (MCA). Udyam Registration Certificates are also accepted for MSMEs. Required data field:business_name — legal business name exactly as it appears on the certificate.
2. GST Registration Certificate (file upload required)
Form GST REG-06 issued by the Goods and Services Tax Network (GSTN). No additional data fields required.Validation Rules
- The business name must match exactly across both documents and the
end_user.name/business_namedata field - Both documents must be valid and not expired
- Documents must be clear, legible PDFs or images
- Submitting the same file for both document slots will be rejected
Related
- Regulatory Compliance - Overview and Console guide
- Phone Numbers - Search and buy numbers
- Account Phone Numbers - Manage your numbers