# Get a task's input

> The tasks.inputs.get operation: GET /api/v1/tasks/{id}/inputs/{kind} in the REST API and the tasks_inputs_get tool in the MCP server.

Returns what Ownrecord prepared for a task, generated from current data:

- `registration_packet` (registration tasks): the regime's registration form fields filled from the
  entity's data (`fields`, with `missing` for required ones Ownrecord doesn't have), the entity,
  representatives (authorizations valid now), start date, expected turnover, bank details, activity,
  websites and prerequisites. `format: "pdf"` returns a PDF summary of it (base64 in `content`).
- `filing_package` (filing tasks, once the period is prepared): the report files (download them with
  `filing_periods.report`), a summary per country and rate with corrections and balances, payment
  instructions in the filing currency, and the reconciliation proof against the ledger.
- `playbook`: the regime's platform-maintained steps, official portal URLs and field notes (`format:
  "markdown"` returns the text in `content`).

Inputs are data. Only the playbook is guidance, maintained by Ownrecord; fixture or unreviewed knowledge is
marked as such. Payment details the tax knowledge doesn't have yet are null, never guessed.

## At a glance

- **REST:** `GET /api/v1/tasks/{id}/inputs/{kind}`
- **MCP tool:** `tasks_inputs_get`
- **Operation ID:** `tasks.inputs.get`
- **Scope:** Organization, or one of its legal entities or brands
- **Permission:** `tasks:read`
- **Risk tier:** `read`
- **Dry run:** Not supported
- **Idempotency:** Not needed (read only)
- **Modes:** Test and live
- **Authentication:** API key with the `tasks:read` scope
- **Since:** M10

## Request

### Path parameters

| Field  | Type                                                       | Description |
| ------ | ---------------------------------------------------------- | ----------- |
| `id`   | `task_…` ID                                                |             |
| `kind` | one of `registration_packet`, `filing_package`, `playbook` |             |

### Query parameters

| Field    | Type                             | Required | Description                                                                       |
| -------- | -------------------------------- | -------- | --------------------------------------------------------------------------------- |
| `format` | one of `json`, `pdf`, `markdown` | No       | `json` (default); `pdf` for the registration packet; `markdown` for the playbook. |

## Response

`200 OK` with a JSON object:

| Field         | Type                                                       | Description |
| ------------- | ---------------------------------------------------------- | ----------- |
| `object`      | `"task_input"`                                             |             |
| `taskId`      | `task_…` ID                                                |             |
| `kind`        | one of `registration_packet`, `filing_package`, `playbook` |             |
| `format`      | one of `json`, `pdf`, `markdown`                           |             |
| `filename`    | string                                                     |             |
| `contentType` | string                                                     |             |
| `data`        | object or null                                             |             |
| `content`     | string or null                                             |             |
| `size`        | integer (at least 0)                                       |             |
| `sha256`      | string                                                     |             |

## Examples

### The filing package of the Q3 return

```http
GET /api/v1/tasks/task_01m4ttwd3veh9apbewxheq5xa9/inputs/filing_package
Authorization: Bearer or_test_…
```

Response (`200`):

```json
{
  "object": "task_input",
  "taskId": "task_01m4ttwd3veh9apbewxheq5xa9",
  "kind": "filing_package",
  "format": "json",
  "filename": "filing-package-EU_OSS_UNION-2026-Q3.json",
  "contentType": "application/json",
  "data": {
    "object": "filing_package",
    "filingPeriodId": "fp_01m4ttwd3veh9apbewxheq5xa7",
    "regimeId": "EU_OSS_UNION",
    "periodKey": "2026-Q3",
    "firstDay": "2026-07-01",
    "lastDay": "2026-09-30",
    "dueDate": "2026-10-31",
    "dueAt": "2026-10-31T22:59:59.000Z",
    "status": "prepared",
    "reportKind": "eu_oss",
    "reportFiles": [
      {
        "format": "csv",
        "fileId": "file_01m4ttwd3veh9apbewxheq5xa5",
        "filename": "EU_OSS_UNION-2026-Q3.csv",
        "contentType": "text/csv; charset=utf-8",
        "size": 1824,
        "sha256": "9b2c7e1d0a5f4e3c2b1a0f9e8d7c6b5a4f3e2d1c0b9a8f7e6d5c4b3a2f1e0d9c"
      }
    ],
    "summary": {
      "currency": "EUR",
      "rows": [
        {
          "country": "DE",
          "rate": 190000,
          "taxable": "100000000",
          "tax": "19000000",
          "lines": 1
        },
        {
          "country": "FR",
          "rate": 200000,
          "taxable": "100000000",
          "tax": "20000000",
          "lines": 1
        }
      ],
      "corrections": [],
      "balances": [
        {
          "country": "DE",
          "supplies": "19000000",
          "corrections": "0",
          "balance": "19000000"
        },
        {
          "country": "FR",
          "supplies": "20000000",
          "corrections": "0",
          "balance": "20000000"
        }
      ],
      "totals": {
        "taxable": "200000000",
        "tax": "39000000",
        "corrections": "0",
        "due": "39000000",
        "refundable": "0"
      },
      "reportTotals": {
        "taxable": "200000000",
        "tax": "39000000",
        "corrections": "0",
        "due": "39000000",
        "refundable": "0"
      },
      "consistent": true
    },
    "payment": {
      "amount": {
        "amount": "39000000",
        "currency": "EUR",
        "decimal": "39.00"
      },
      "refundable": {
        "amount": "0",
        "currency": "EUR",
        "decimal": "0.00"
      },
      "dueDate": "2026-10-31",
      "dueAt": "2026-10-31T22:59:59.000Z",
      "method": null,
      "accountDetails": null,
      "referenceFormat": null,
      "reference": null,
      "notes": [
        "Pay 39.00 EUR by 2026-10-31.",
        "Ownrecord's tax knowledge has no payment details for this return yet: use the authority's own payment instructions (see the playbook). Never pay to an account you can't verify with the authority.",
        "Quote the reference the authority gives when the return is filed."
      ]
    },
    "reconciliation": {
      "matches": true,
      "rows": [
        {
          "jurisdictionId": "DE",
          "currency": "EUR",
          "reportTax": "19000000",
          "ledgerTax": "19000000",
          "difference": "0"
        },
        {
          "jurisdictionId": "FR",
          "currency": "EUR",
          "reportTax": "20000000",
          "ledgerTax": "20000000",
          "difference": "0"
        }
      ],
      "differences": []
    },
    "fx": [],
    "generatedAt": "2026-10-03T09:00:00.000Z"
  },
  "content": null,
  "size": 2410,
  "sha256": "3c1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f"
}
```

### The registration packet

```http
GET /api/v1/tasks/task_01m4ttwd3veh9apbewxheq5xae/inputs/registration_packet
Authorization: Bearer or_test_…
```

Response (`200`):

```json
{
  "object": "task_input",
  "taskId": "task_01m4ttwd3veh9apbewxheq5xae",
  "kind": "registration_packet",
  "format": "json",
  "filename": "registration-packet-EU_OSS_NON_UNION.json",
  "contentType": "application/json",
  "data": {
    "object": "registration_packet",
    "regimeId": "EU_OSS_NON_UNION",
    "regimeName": "One-Stop Shop, non-Union scheme",
    "registrationId": "regn_01m4ttwd3veh9apbewxheq5xag",
    "state": "grace",
    "method": "online_portal",
    "portalUrl": "https://ownrecord.io/fixtures/EU/oss-non-union-portal",
    "identityRequirements": "Online registration with the chosen member state of identification",
    "typicalProcessingDays": 14,
    "fields": [
      {
        "label": "Legal name",
        "value": "Helvetia Apps AG",
        "source": "legal_entities.legalName",
        "required": true,
        "missing": false,
        "notes": null
      },
      {
        "label": "Date of the first supply",
        "value": "2026-10-14",
        "source": "registrations.triggeredAt",
        "required": true,
        "missing": false,
        "notes": null
      },
      {
        "label": "Contact person and email",
        "value": null,
        "source": null,
        "required": true,
        "missing": true,
        "notes": "The entity's tax manager"
      }
    ],
    "entity": {
      "legalName": "Helvetia Apps AG",
      "tradingName": null,
      "address": "Bahnhofstrasse 1, 8001 Zürich, CH",
      "country": "CH",
      "companyRegistryId": "CHE-000.000.042",
      "taxId": {
        "type": "ch_vat",
        "value": "CHE-000.000.042 MWST"
      },
      "currency": "CHF",
      "timeZone": "Europe/Zurich"
    },
    "representatives": [
      {
        "name": "Ana Horvat",
        "kind": "employee_eid",
        "contact": "ana.horvat@example.com",
        "validFrom": "2026-01-01",
        "validTo": null,
        "portals": ["OSS portal"]
      }
    ],
    "startDate": "2026-10-14",
    "expectedTurnover": {
      "amount": {
        "amount": "1200000000",
        "currency": "EUR",
        "decimal": "1200.00"
      },
      "basis": "Sales counted toward the EU_OSS_NON_UNION threshold in 2026, all brands (a guide, not a forecast)."
    },
    "bankDetails": null,
    "activity": "Software as a service",
    "websites": ["pay.helvetia.example"],
    "prerequisites": [
      {
        "code": "portal_access",
        "description": "Open a portal account",
        "leadTimeDays": 14,
        "status": "done"
      }
    ],
    "missing": ["Contact person and email"]
  },
  "content": null,
  "size": 1630,
  "sha256": "3c1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f"
}
```

## Errors

| Code                                                                                                 | HTTP status | When                                                                                    | What to do                                                                                                                                                                                                                       |
| ---------------------------------------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed)               | 400         | `kind` or `format` is invalid, or the format doesn't fit the kind.                      | Fix the fields listed in `details.issues` and send the request again.                                                                                                                                                            |
| [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found)             | 404         | No task with this ID in this organization, entity and mode.                             | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.                                                                                                                             |
| [`task_input_not_available`](https://ownrecord.io/docs/reference/errors.md#task_input_not_available) | 409         | The task has no such input, or the filing period isn't prepared yet (`details.reason`). | Read `details.reason`: a registration packet belongs to registration tasks, a filing package to filing tasks once the period is prepared (`filing_periods.prepare`), and a playbook exists only where the tax knowledge has one. |
| [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied)               | 403         | You can't see compliance tasks here.                                                    | Ask an organization owner or admin for a role or scope that allows this action.                                                                                                                                                  |

It can also return these [common errors](https://ownrecord.io/docs/reference.md#common-errors): [`api_version_unsupported`](https://ownrecord.io/docs/reference/errors.md#api_version_unsupported), [`authentication_required`](https://ownrecord.io/docs/reference/errors.md#authentication_required), [`api_key_invalid`](https://ownrecord.io/docs/reference/errors.md#api_key_invalid), [`dry_run_not_supported`](https://ownrecord.io/docs/reference/errors.md#dry_run_not_supported), [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited), [`internal_error`](https://ownrecord.io/docs/reference/errors.md#internal_error).
