# Retrieve file details

Retrieve file details associated with a specific Moov account.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the `/accounts/{accountID}/files.read` scope.

## GET

/accounts/{accountID}/files/{fileID}

### Example Requests

**cURL**
```shell
curl -X GET "https://api.moov.io/accounts/{accountID}/files/{fileID}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.04.00"
```

**Go**
```go
mc, _ := moov.NewClient()

var accountID string
var fileID string

mc.GetFile(ctx, accountID, fileID)
```

**TypeScript**
```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.files.get({
    accountID: "7f888113-d35a-4536-b9bc-c55076736ab6",
    fileID: "af170db9-0d17-4a9f-ade6-5dd2f1b3412d",
  });

console.log(result);
}

run();
```

**PHP**
```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$response = $sdk->accounts->getFile(
    accountID: '7f888113-d35a-4536-b9bc-c55076736ab6',
    fileID: 'af170db9-0d17-4a9f-ade6-5dd2f1b3412d'
);

if ($response->fileDetails !== null) {
    // handle response
}
```

**Java**
```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetFileDetailsResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

GetFileDetailsResponse res = sdk.files().get()
                .accountID("7f888113-d35a-4536-b9bc-c55076736ab6")
                .fileID("af170db9-0d17-4a9f-ade6-5dd2f1b3412d")
                .call();

if (res.fileDetails().isPresent()) {
            System.out.println(res.fileDetails().get());
        }
    }
}
```

**Python**
```python
from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.files.get(account_id="7f888113-d35a-4536-b9bc-c55076736ab6", file_id="af170db9-0d17-4a9f-ade6-5dd2f1b3412d")

# Handle response
    print(res)
```

**Ruby**
```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.files.get(account_id: '7f888113-d35a-4536-b9bc-c55076736ab6', file_id: 'af170db9-0d17-4a9f-ade6-5dd2f1b3412d')

unless res.file_details.nil?
  # handle response
end
```

**C#**
```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

var res = await sdk.Files.GetAsync(
    accountID: "7f888113-d35a-4536-b9bc-c55076736ab6",
    fileID: "af170db9-0d17-4a9f-ade6-5dd2f1b3412d"
);

// handle response
```

## Response Format

```json
{
  "fileID": "string",
  "fileName": "logo.png",
  "accountID": "string",
  "filePurpose": "representative_verification",
  "fileStatus": "pending",
  "metadata": "{\"error_code\": \"document-name-mismatch\", \"requirement_id\": \"document.individual.verification\", \"representative_id\": \"c63ab175-251d-497e-a267-7346d087e180\", \"comment\": \"testing comment\"}",
  "decisionReason": "not correct file",
  "fileSizeBytes": 0,
  "createdOn": "2019-08-24T14:15:22Z",
  "updatedOn": "2019-08-24T14:15:22Z"
}
```

### Error Responses
- The request completed successfully.
- The request contained missing or expired authentication.
- The user is not authorized to make the request.
- The requested resource was not found.
- Request was refused due to rate limiting.
- The request failed due to an unexpected error.
- The request failed because a downstream service failed to respond.

### API Versioning
Set this header to `v2026.04.00` to use the API described in this specification. When omitted, the server defaults to `v2024.01.00`, which may not match the behavior documented here.

### File Metadata
- The purpose of the file being uploaded:
  - `business_verification`
  - `representative_verification`
  - `individual_verification`
  - `merchant_underwriting`
  - `account_requirement`
  - `identity_verification`
- The file's status:
  - `pending`
  - `approved`
  - `rejected`
