MCA Universal Doc fetch
Overview
The Converted Documents API returns selected MCA filings for a company or LLP. For each filing you get:
- Original PDF (documentUrl): the document as filed with MCA. Use it for legal verification.
- Universal PDF (convertedDocumentUrl): a readable copy that opens in any standard PDF viewer, without Adobe Acrobat. No field values are dropped.
- Attachments: files embedded in the original (for example, the shareholder list in MGT-7) as separate download links.
Why this exists. MCA publishes some forms (MOA, AOA, COI, MGT-7, MGT-7A) in a format that opens only in Adobe Acrobat. In other viewers they show a blank page or a "Please wait…" message. The Universal PDF lets your teams read these documents on any machine.
How it works. The API is asynchronous:
1. Call Fetch with a CIN or LLPIN. You get a requestId straight away.
2. Collect the results in one of two ways:
- wait for Signzy to POST them to your callbackUrl, or
- call Get with the requestId until status is completed, partially_completed or failed.
Basics
Item | Value |
|---|---|
Base URL (UAT / Pre-production) | https://api-preproduction.signzy.app |
Base URL (Production) | https://api.signzy.app |
Authentication | Credentials from the SSP portal: https://portal.signzy.app/#/api-credentials |
Method | POST for both endpoints |
Content type | application/json |
Dates | documentFilingDate uses dd/mm/yyyy |
Supported documents
Only these five filing types are returned:
Document | Also matches |
|---|---|
Certificate of Incorporation (COI) | "Certificate of Incorporation", COI |
Articles of Association (AOA) | Altered AOA, EAOA |
Memorandum of Association (MOA) | Altered MOA, EMOA |
MGT-7 | Form MGT-7 |
MGT-7A | Form MGT-7A |
1. Fetch
POST /api/v3/fetchCompanyConvertedDocuments
Starts a job and returns a requestId.
Request body
Parameter | Type | Required | Description |
|---|---|---|---|
cin | string | One of cin / llpin | CIN of the company |
llpin | string | One of cin / llpin | LLPIN of the LLP |
callbackUrl | string | No | URL where Signzy POSTs the result when the job finishes. Leave it out if you will use Get. |
Send exactly one of cin or llpin. Sending both, or neither, returns 400.
Sample request
curl --location 'https://api-preproduction.signzy.app/api/v3/fetchCompanyConvertedDocuments' \ --header 'Content-Type: application/json' \ --header 'Authorization: <ACCESS_TOKEN>' \ --data '{ "cin": "U46491HR2026PTC147722" }' |
|---|
With a callback:
{ "cin": "U46491HR2026PTC147722", "callbackUrl": "https://client.example.com/hook" } |
|---|
For an LLP:
{ "llpin": "AAB-1234" } |
|---|
Response 200
{ "cin": "U46491HR2026PTC147722", "llpin": "", "requestId": "6abe4448e2b81e001294d93a", "callbackUrl": "https://client.example.com/hook" } |
|---|
- For an LLP, llpin is filled and cin is "".
- callbackUrl is returned only if you sent one.
Good to know
- For any API call, a new request ID would be generated. Users can use the same request ID for 7 days, as the links are valid for 7 days once the job has been finished
- Once the job finishes, data packed is sent to your callback right away.
2. Get
POST /api/v3/getCompanyConvertedDocuments
Returns the job status, files and attachments for a requestId. You can call it as often as you need.
Request body
Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | Yes | The requestId returned by Fetch |
A requestId from any other Signzy API returns 400 Invalid RequestId.
Sample request
curl --location 'https://api-preproduction.signzy.app/api/v3/getCompanyConvertedDocuments' \ --header 'Content-Type: application/json' \ --header 'Authorization: <ACCESS_TOKEN>' \ --data '{ "requestId": "6abe4448e2b81e001294d93a" }' |
|---|
Response 200
{ "companyDocuments": { "cin": "U46491HR2026PTC147722", "llpin": "", "requestId": "6abe4448e2b81e001294d93a", "callbackUrl": "", "status": "completed", "files": [ { "documentType": "Incorporation Documents", "documentName": "Articles of Association", "documentFilingDate": "29/06/2022", "documentStatus": "completed", "documentUrl": "https://…", "convertedDocumentUrl": "https://…", "conversionStatus": "CONVERTED", "attachments": [ { "attachmentName": "List of shareholders.xlsm", "documentUrl": "https://…", "parentDocumentName": "Form MGT-7", "parentDocumentFilingDate": "30/11/2023" } ] } ], "updatedTimestamp": 1727700000, "isComplete": 1 } } |
|---|
File fields
Field | Description |
|---|---|
documentUrl | Link to the original PDF |
convertedDocumentUrl | Link to the Universal PDF when conversionStatus is CONVERTED; otherwise "" |
conversionStatus | CONVERTED, NOT_REQUIRED, FAILED or PENDING (see below) |
conversionReason | Only present when conversionStatus is FAILED |
attachments[] | Embedded files: attachmentName, documentUrl, parentDocumentName, parentDocumentFilingDate |
3. Callback
If you send a callbackUrl, Signzy POSTs the result to it once, when the job reaches completed, partially_completed or failed.
- The payload is the same companyDocuments object as the Get response, without updatedTimestamp.
- Links in the callback are valid for 7 days. Call Get any time for fresh links.
Statuses
Job status
Value | Meaning | Job status | Recommended client action |
|---|---|---|---|
REQUESTED | Job is still running. Call Get again later. | Pending | Wait and keep polling |
completed | All documents delivered. | Finished | Download the document. |
partially_completed | Some documents delivered, others not due to an error on MCA | Finished | Download the document. Client can reach to [email protected] for clarification or support |
failed | No documents delivered | Failed | Retry or reach to [email protected] for clarification or support |
conversionStatus
The original PDF is always returned, even if conversion fails.
Value | Meaning | convertedDocumentUrl |
|---|---|---|
CONVERTED | Universal PDF is ready | Link |
NOT_REQUIRED | The original already opens in any viewer | "" |
FAILED | A Universal PDF could not be produced. See conversionReason. | "" |
PENDING | Conversion still in progress | "" |
conversionReason (when FAILED)
In every case, the original is still available at documentUrl.
Value | Meaning | What to do |
|---|---|---|
not_pdf | File is not a readable PDF | Use the original |
encrypted | PDF is password-protected | Use the original |
no_rendition | Form content could not be extracted | Use the original |
parity | The copy could not be confirmed to contain every field, so it was withheld | Use the original |
convert_error | Unexpected error during conversion | Use the original; contact support if it repeats |
too_large | Original is larger than 40 MB | Use the original |
not_converted | Job finished before conversion ran | Use the original; contact support if it repeats |
source_unavailable | Stored original could not be read | Contact support |
retry_exhausted | Temporary errors continued after retries | Contact support |
About the Universal PDF
- For reading only. It is not a legal substitute for the original. Always verify against documentUrl.
- Signzy note on every page. A strip below the page content reads "Generated by Signzy - not the original document". The filing content itself is never covered.
- Digital signatures. The Universal PDF cannot carry digital signatures. If the original was signed, the note lists each signer's name and signing time, and visible stamps appear in the signature area. Signatures can only be verified on the original.
- Page size. Pages are slightly taller than the original to fit the note. Content stays in the same position.
- Attachments are returned as-is (not converted). Attachments larger than 40 MB are skipped.
Errors
All errors use this format:
{ "error": { "statusCode": 400, "message": "Invalid RequestId", "code": "BAD_REQUEST" } } |
|---|
HTTP | Code | When |
|---|---|---|
400 | BAD_REQUEST | Missing or invalid cin, llpin or callbackUrl; both or neither identifier sent; unknown requestId or one from another API |
409 | CONFLICT | Job is stuck or an unexpected error occurred. Call Get again; contact support if it repeats. |
410 | EXPIRED | Results for this request are no longer available. Send a new Fetch. |
503 | SERVICE_UNAVAILABLE | Fetch only. The service is not available. Contact Signzy support. |
Troubleshooting
Symptom | Likely cause | Action |
|---|---|---|
status is REQUESTED | Job is still running | Call Get again later |
convertedDocumentUrl is empty | conversionStatus is NOT_REQUIRED, FAILED or PENDING | Check conversionStatus; use documentUrl |
Fewer files than expected | Only the five supported types are returned, or status is partially_completed | Check Supported documents and status |
Links stopped working | Links have expired | Call Get for fresh links |
No callback received | Callbacks are sent only once | Call Get with the requestId |
Glossary
Term | Meaning |
|---|---|
MCA | Ministry of Corporate Affairs |
CIN | Corporate Identification Number of a company |
LLPIN | Identification Number of a Limited Liability Partnership |
COI / AOA / MOA | Certificate of Incorporation / Articles of Association / Memorandum of Association |
MGT-7 / MGT-7A | Annual return forms |
Universal PDF | Signzy's readable copy of a filing that opens in any PDF viewer |
requestId | ID of a Fetch job, used to get its results |
Please contact [email protected] for any support and clarification needed