# Download Fax

> Purpose: Download one eFax PDF into the app's normal document store for later processing. Use when: Import a fax listed in the organization's connected mailbox, then pass document_id to OCR, splitting, or extraction actions. Inputs: Required fax_id UUID string from List Received Faxes; optional hidden:boolean (default false). Outputs: document_id:string, s3_key:string, size:integer bytes, was_existing:boolean; success:boolean, error:string|null, failure_category:null. The runner wraps successful output under default. No file bytes. Success: success=true and error=null mean the shared writer returned a stored or reused document reference. This does not mean OCR or later processing completed. Failure: success=false with a safe error. The source may already be marked read even if storage failed. A retry can reuse the same org/mailbox/fax document; deleted documents are not restored. Login can retry transient errors up to three times; the image request is never retried automatically. Effects: Marks the source fax read in eFax and stores the PDF in S3 and the app database. Visible in the inbox unless hidden=true; preserves workflow assignment and prior processing on repeat imports. Examples: {"fax_id":"00000000-0000-0000-0000-000000000001","hidden":false} can return document_id="00000000-0000-0000-0000-000000000002", size=512, was_existing=false, success=true and error=null, with an s3_key, under default.

Source: [https://genhealth.ai/docs/workflows/integrations/e-fax/efax_download_fax](https://genhealth.ai/docs/workflows/integrations/e-fax/efax_download_fax)

Integration: [eFax](https://genhealth.ai/docs/workflows/integrations/e-fax.md)

- Handler: `efax_download_fax`

- Connection type: `efax`

## Use in a workflow

Copy this discovered node config, fill params from the input contract, and validate the complete graph. Integration results are available as {{node_id.default.field}}. Check business success before dependent writes; completion alone does not prove business success.

```json

{
  "_group": "eFax",
  "params": {
    "hidden": false
  },
  "handler": "efax_download_fax"
}

```

[Action contracts](https://genhealth.ai/docs/workflows/action-contracts.md) · [Run recovery](https://genhealth.ai/docs/workflows/operations.md)

## Inputs

- `fax_id` — Fax Id (text, required)
  Required eFax fax UUID from List Received Faxes in this mailbox; not a local document ID.
- `hidden` — Hidden (boolean)
  Hide a newly imported PDF from the app inbox. Defaults to false. Repeat imports preserve prior work.
  Default: `false`

## Outputs

- `document_id` — Document Id
- `s3_key` — S3 Key
- `size` — Size
- `was_existing` — Was Existing
- `success` — Success
- `error` — Error

Output schema completeness: `reviewed_partial`

## Safety

- External effect: `write`
- Confirmation recommended: no
- Retry safe: no
- Dry run supported: no

## Schemas

These schemas are first-pass authoring guidance. Runtime validation remains authoritative.

### Input schema

```json
{
  "type": "object",
  "required": [
    "fax_id"
  ],
  "properties": {
    "fax_id": {
      "type": "string",
      "format": "uuid",
      "description": "Required eFax fax UUID from List Received Faxes in this mailbox; not a local document ID.",
      "x-workflow-field-type": "text"
    },
    "hidden": {
      "type": "boolean",
      "default": false,
      "description": "Hide a newly imported PDF from the app inbox. Defaults to false. Repeat imports preserve prior work.",
      "x-workflow-field-type": "boolean"
    }
  },
  "additionalProperties": false
}
```

### Output schema

```json
{
  "type": "object",
  "properties": {
    "size": {
      "type": "integer",
      "minimum": 0
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "s3_key": {
      "type": "string"
    },
    "success": {
      "type": "boolean"
    },
    "document_id": {
      "type": "string",
      "format": "uuid"
    },
    "was_existing": {
      "type": "boolean"
    }
  },
  "additionalProperties": true
}
```
