---
title: "Get the metadata and contents of requested files"
method: POST
path: "/repos/{owner}/{repo}/file-contents"
tags: ["repository"]
---

# Get the metadata and contents of requested files

`POST /repos/{owner}/{repo}/file-contents`

Uses automatic pagination based on default page size and max response size and returns the maximum allowed number of files. Files which could not be retrieved are null. Files which are too large are being returned with `encoding == null`, `content == null` and `size > 0`, they can be requested separately by using the `download_url`.

## Path parameters

- `owner` string, required
- `repo` string, required

## Query parameters

- `ref` string

## Request body

- GetFilesOptions — GetFilesOptions options for retrieving metadate and content of multiple files
  - `files` string[] — Files is the list of file paths to retrieve

## Response `200`

ContentsListResponse

- ContentsResponse[]
  - `_links` FileLinksResponse — FileLinksResponse contains the links for a repo's file
    - `git` string — GitURL is the Git API URL for this file
    - `html` string — HTMLURL is the web URL for this file
    - `self` string — Self is the API URL for this file
  - `content` string — `content` is populated when `type` is `file`, otherwise null
  - `download_url` string — DownloadURL is the direct download URL for this file
  - `encoding` string — `encoding` is populated when `type` is `file`, otherwise null
  - `git_url` string — GitURL is the Git API URL for this blob or tree
  - `html_url` string — HTMLURL is the web URL for this file or directory
  - `last_author_date` string, date-time
  - `last_commit_message` string — LastCommitMessage is the message of the last commit that affected this file
  - `last_commit_sha` string — LastCommitSHA is the SHA of the last commit that affected this file
  - `last_committer_date` string, date-time
  - `lfs_oid` string — LfsOid is the Git LFS object ID if this file is stored in LFS
  - `lfs_size` integer — LfsSize is the file size if this file is stored in LFS
  - `mode` string — `mode` is the Git file mode as an octal string, e.g. `100644` (regular), `100755` (executable), `120000` (symlink), `160000` (submodule)
  - `name` string — Name is the file or directory name
  - `path` string — Path is the full path to the file or directory
  - `sha` string — SHA is the Git blob or tree SHA
  - `size` integer — Size is the file size in bytes
  - `submodule_git_url` string — `submodule_git_url` is populated when `type` is `submodule`, otherwise null
  - `target` string — `target` is populated when `type` is `symlink`, otherwise null
  - `type` string — `type` will be `file`, `dir`, `symlink`, or `submodule`
  - `url` string — URL is the API URL for this file or directory

## Other responses

- `404` — APINotFound is a not found empty response

---

[API](https://skmtc.net/gitea/apis/gitea-api.md) · [All operations](https://skmtc.net/gitea/apis/gitea-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gitea/gitea-api/revisions/350de506cefa/schema)
