> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.awork.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.awork.com/_mcp/server.

# Returns a file of the specified agent thread.

GET https://api.awork.com/api/v1/agents/threads/{threadId}/files/{fileId}

Returns file metadata for a file attached to the specified agent thread.
Both the thread id and file id must match the attachment. Returns not found if the file is not attached to that thread.
The user must have `read` access to the agent thread.

Reference: https://developers.awork.com/apiv1/agent-thread-files/get-agents-threads-files-by-thread-id-and-file-id

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `threadId` (string, required) — The agent thread id.
- `fileId` (string, required) — The file id.

## Response

### 200

OK

- `name` (string, optional, nullable) — The user-specified name of the file.
- `description` (string, optional, nullable) — The description of the file.
- `id` (string, optional) — The id of the file info.
- `projectId` (string, optional, nullable)
- `projectTemplateId` (string, optional, nullable)
- `companyId` (string, optional, nullable)
- `taskId` (string, optional, nullable)
- `taskTemplateId` (string, optional, nullable)
- `userId` (string, optional, nullable)
- `documentId` (string, optional, nullable)
- `fileName` (string, optional, nullable) — The name of the file.
- `entityType` (string, optional, nullable) — The name of the linked entity type.
- `mimeType` (string, optional, nullable) — The MIME type of the file.
- `createdOn` (string, optional) — The date this file was created.
- `createdBy` (string, optional) — The id of the user who created this file.
- `updatedOn` (string, optional) — The date this file was last modified.
- `updatedBy` (string, optional) — The id of the user who last modified this file.
- `fileVersions` (list of FileVersion, optional, nullable) — List of all versions.
- `isCommentFile` (boolean, optional) — Whether the file is related to a comment.
- `externalProvider` (string, optional, nullable) — The external provider for the file. Like 'google' or 'onedrive'.
- `externalFileUrl` (string, optional, nullable) — The file url of the external provider.
- `isHiddenForConnectUsers` (boolean, optional) — Whether the file is hidden for connect users.
- `entityId` (string, optional, nullable, deprecated) — Deprecated. The id of the linked entity derived from entity specific owner ids.

## Errors

### 401 Unauthorized Error

Unauthorized

- `code` (string, required) — The error code.
- `description` (string, required) — The description of the error.
- `link` (string, required) — The link to the API documentation page.
- `details` (list of string, optional, nullable) — A list of details describing the error.
- `validationErrors` (list of ValidationErrorResponse, optional, nullable) — If a validation error occurred, this contains the validation errors for each property.
- `traceId` (string, optional, nullable) — The request trace id for tracking the request.

### 404 Not Found Error

Not Found

- `code` (string, required) — The error code.
- `description` (string, required) — The description of the error.
- `link` (string, required) — The link to the API documentation page.
- `details` (list of string, optional, nullable) — A list of details describing the error.
- `validationErrors` (list of ValidationErrorResponse, optional, nullable) — If a validation error occurred, this contains the validation errors for each property.
- `traceId` (string, optional, nullable) — The request trace id for tracking the request.

## Types

### FileVersion

- `id` (string, optional) — The id of the file version.
- `fileInfoId` (string, optional) — The id of the file this version belongs to.
- `version` (double, optional) — The version of the file.
- `size` (long, optional) — The size of the file, in bytes.
- `width` (double, optional, nullable) — The width if this is an image file.
- `height` (double, optional, nullable) — The height if this is an image file.
- `createdOn` (string, optional) — The date this file version was created.
- `createdBy` (string, optional) — The id of the user who created this file version.
- `updatedOn` (string, optional) — The date this file version was last modified.
- `updatedBy` (string, optional) — The id of the user who last modified this file version.

### ValidationErrorResponse

The validation error response.

- `property` (string, optional, nullable) — The name of the property that failed validation.
- `message` (string, optional, nullable) — The reason why this property failed validation.

## Examples

**Response**

```json
{
  "name": "Final project report",
  "description": "The client requested a cost overview and timeline",
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "projectId": "123e4567-e89b-12d3-a456-426614174000",
  "projectTemplateId": "123e4567-e89b-12d3-a456-426614174000",
  "companyId": "123e4567-e89b-12d3-a456-426614174000",
  "taskId": "123e4567-e89b-12d3-a456-426614174000",
  "taskTemplateId": "123e4567-e89b-12d3-a456-426614174000",
  "userId": "123e4567-e89b-12d3-a456-426614174000",
  "documentId": "123e4567-e89b-12d3-a456-426614174000",
  "fileName": "Final project report.xlsx",
  "entityType": "project",
  "mimeType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  "createdOn": "2024-01-15T09:30:00Z",
  "createdBy": "123e4567-e89b-12d3-a456-426614174000",
  "updatedOn": "2024-01-15T09:30:00Z",
  "updatedBy": "123e4567-e89b-12d3-a456-426614174000",
  "fileVersions": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "fileInfoId": "123e4567-e89b-12d3-a456-426614174000",
      "version": 13,
      "size": 13590,
      "width": 1920,
      "height": 1200,
      "createdOn": "2024-01-15T09:30:00Z",
      "createdBy": "123e4567-e89b-12d3-a456-426614174000",
      "updatedOn": "2024-01-15T09:30:00Z",
      "updatedBy": "123e4567-e89b-12d3-a456-426614174000"
    }
  ],
  "isCommentFile": false,
  "externalProvider": null,
  "externalFileUrl": null,
  "isHiddenForConnectUsers": true,
  "entityId": "123e4567-e89b-12d3-a456-426614174000"
}
```

**SDK Code**

```python
import requests

url = "https://api.awork.com/api/v1/agents/threads/threadId/files/fileId"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.awork.com/api/v1/agents/threads/threadId/files/fileId';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.awork.com/api/v1/agents/threads/threadId/files/fileId"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.awork.com/api/v1/agents/threads/threadId/files/fileId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.awork.com/api/v1/agents/threads/threadId/files/fileId")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.awork.com/api/v1/agents/threads/threadId/files/fileId', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.awork.com/api/v1/agents/threads/threadId/files/fileId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.awork.com/api/v1/agents/threads/threadId/files/fileId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```