> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prosights.co/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK Methods

> Access the ProSights APIs through our Python SDK

## Recreate Resource

The RecreateResource provides document recreation capabilities, accessible through `client.enterprise_api.recreate`. This resource handles document processing workflows including creation, status monitoring, and resource management.

| **Method**          | **HTTP Endpoint**                                              | **Description**                                              | **Content Type**    |
| :------------------ | :------------------------------------------------------------- | :----------------------------------------------------------- | :------------------ |
| `create()`          | POST /enterprise-api/recreate/                                 | Initiates document recreation process                        | multipart/form-data |
| `retrieve_status()` | GET /enterprise-api/recreate/status/                           | Fetches recreation operation status                          | application/json    |
| `hide()`            | POST /enterprise-api/recreate/hide/                            | Manages resource visibility                                  | application/json    |
| `get_dfs()`         | ABSTRACTED GET /enterprise-api/recreate/recreate\_id/to\_json/ | Returns a recreate's underlying data as a list of dataframes | application/json    |

### recreate.create

Creates a new recreation job and returns a recreate\_id and status.

| **Parameter**                   | **Type**          | **Default** | **Description**                                                            |
| :------------------------------ | :---------------- | :---------- | :------------------------------------------------------------------------- |
| `file`                          | Bytes or Filelike | None        | Input document file                                                        |
| `selected_pages`                | str               | None        | Page selection specification (e.g., "1-5", "1-5,7-9,10-12", "1,2,3,4,5,6") |
| `is_ppt_process_enabled`        | str               | false       | PowerPoint processing toggle                                               |
| `is_xls_process_charts_enabled` | str               | false       | Excel chart processing toggle                                              |
| `is_xls_process_tables_enabled` | str               | "false"     | Excel table processing toggle                                              |
| `selected_table_format`         | str               | None        | Table output format id. Get this from list\_formats                        |

```go theme={null}
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '418099ce-6748-4b97-a92e-3fa1c9bd89cb', 'status': 'CREATED'})
```

### **recreate.retrieve\_status**

Requires a recreate\_id and returns its status and associated download links if available.

**status\_progression.txt**

```go theme={null}
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'CREATED'})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'RECEIVED', 'xls_download_url': None, 'ppt_download_url': None, 'jobs': [...]})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'EXTRACTING', 'xls_download_url': None, 'ppt_download_url': None, 'jobs': [...]})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'PROCESSING', 'xls_download_url': None, 'ppt_download_url': None, 'jobs': [...]})
EnterpriseAPIResponse(status='SUCCESS', data={'recreate_id': '1eaba152-6278-477c-a3c2-b3726915e5c1', 'status': 'COMPLETED', 'xls_download_url': 'https://storage.googleapis.com/...test-pdf.xlsx?...', 'ppt_download_url': 'https://storage.googleapis.com/...test-pdf.pptx?...', 'jobs': [...]})
```

When a job completes, the `xls_download_url` and `ppt_download_url` will be populated with non-null values:

**completed\_example.txt**

```go theme={null}
data={
  'recreate_id': 'cf9b1754-8dd6-4ef1-a3b4-9615411f1363', 
  'status': 'COMPLETED', 
  'xls_download_url': 'https://storage.googleapis.com/...authenticated_url...', 
  'ppt_download_url': 'https://storage.googleapis.com/...authenticated_url...',
  ...
}
```

### **recreate.get\_dfs**

Requires a recreate\_id and returns its data as a list of dataframes.

```python theme={null}

from recreate_sdk import RecreateSDK

client = RecreateSDK(
    api_key="<YOUR_API_KEY>",
    base_url="<API_URL>",
)


def main():
    recreate_id = "<RECREATE_ID>"
    dfs = client.enterprise_api.recreate.get_dfs(recreate_id=recreate_id)
    for i, df in enumerate(dfs):
        print(f"DataFrame {i}:")
        print(f"Shape: {df.shape}")
        print(f"Columns: {list(df.columns)}")
        print(f"Is empty: {df.empty}")
        if not df.empty:
            print(df.head())
        else:
            print("DataFrame is empty - no rows")
        print("-" * 40)


if __name__ == "__main__":
    main()
```

You can inspect and utilize the df as usual

```c theme={null}

DataFrame 0:
Shape: (20, 5)
Columns: ['row_identifier', 'Item', 'Three months ended-September 30, 2024', 'Three months ended-June 30, 2024', 'Three months ended-September 30, 2023']
Is empty: False
             row_identifier                      Item  ... Three months ended-June 30, 2024 Three months ended-September 30, 2023
0                   Revenue                   Revenue  ...                            3,807                                 3,357
1           Cost of revenue           Cost of revenue  ...                            2,695                                 2,472
2              Gross profit              Gross profit  ...                            1,112                                   885
3  Research and development  Research and development  ...                              379                                   369
4       Sales and marketing       Sales and marketing  ...                              343                                   355

[5 rows x 5 columns]
```

## **Other API Resources**

The EnterpriseAPIResource class serves as the primary interface for enterprise API operations. It provides direct access to format listing, PDF unprotection, and token validation functionality.

| **Method**         | **HTTP Endpoint**                   | **Description**                                    | **Return Type**                    |
| :----------------- | :---------------------------------- | :------------------------------------------------- | :--------------------------------- |
| `list_formats()`   | GET /enterprise-api/formats/        | Retrieves available format configuration templates | EnterpriseAPIResponse              |
| `unprotect_pdf()`  | POST /enterprise-api/unprotect-pdf/ | Removes password protection from PDF files         | object                             |
| `validate_token()` | POST /enterprise-api/validate-token | Validates JWT authentication tokens                | EnterpriseAPIValidateTokenResponse |

### **list\_formats**

Returns configuration templates for formatting output files.

```json theme={null}
{
  "status": "SUCCESS",
  "data": {
    "configurations": [
      {
        "id": "468977cb-1fe6-431a-9880-c7b035b72842",
        "template_name": "YOUR_FIRM",
        "created_at": "2025-07-30T17:29:54.365476Z",
        "updated_at": "2025-07-30T17:29:54.365476Z",
        "config": {
          "template_name": "YOUR_FIRM",
          "header_config": {
            "font_family": "Arial",
            "font_color_hex": "#FFFFFF",
            "font_size": 11.0,
            "fill_color_hex": "#093a5b",
            "bolded": true,
            "italicized": false,
            "underlined": false,
            "decimal_precision": 0,
            "horizontal_alignment": "left",
            "vertical_alignment": null,
            "border_style": "thin",
            "border_top": false,
            "border_right": false,
            "border_bottom": false,
            "border_left": false
          },
          "row_config": {
            "font_family": "Arial",
            "font_size": 10.0,
            "font_color_hex": "#000000",
            "fill_color_hex": "#FFFFFF",
            "bolded": false,
            "italicized": false,
            "underlined": false,
            "decimal_precision": 0,
            "horizontal_alignment": "right",
            "vertical_alignment": null,
            "border_style": "none",
            "border_top": false,
            "border_right": false,
            "border_bottom": false,
            "border_left": false,
            "zoom": 100,
            "row_height": 20
          },
          "total_config": {
            "font_family": "Arial",
            "font_color_hex": "#000000",
            "font_size": 11.0,
            "fill_color_hex": "#ddebf7",
            "bolded": true,
            "italicized": false,
            "underlined": false,
            "decimal_precision": 0,
            "horizontal_alignment": "left",
            "vertical_alignment": null,
            "border_style": "thin",
            "border_top": true,
            "border_right": false,
            "border_bottom": false,
            "border_left": false
          }
        },
        "chart_config": {
          "bar_series_overlap": 0,
          "bar_gap_width": 70,
          "line_series_width": 2.0,
          "pie_chart_style": "doughnut",
          "donut_hole_size": 40,
          "colors": [
            "#093a5b",
            "#808080",
            "#005454",
            "#432752",
            "#bb8110",
            "#803d02"
          ],
          "font_family": "Arial",
          "font_color_hex": "#000000",
          "font_size": 10,
          "quick_sizing_config": null,
          "column_bar_group_config": null,
          "line_group_config": null,
          "combo_group_config": null,
          "area_group_config": null,
          "pie_donut_group_config": null
        }
      }
    ]
  }
}
```

### **unprotect\_pdf**

Removes password protection from PDF files. Requires `file` and `password` parameters.

**unprotect\_**[**example.py**](http://example.py)

```python theme={null}
# Unprotect a password-protected PDF
with open("protected.pdf", "rb") as file:
    response = client.enterprise_api.unprotect_pdf(
        file=file,
        password="your_password"
    )
```

### **validate\_token**

Validates JWT authentication tokens. Requires a `token` parameter.

**validate\_token\_**[**example.py**](http://example.py)

```python theme={null}
# Validate authentication token
response = client.enterprise_api.validate_token(token="your_jwt_token")
```
