> ## Documentation Index
> Fetch the complete documentation index at: https://benchgen.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a benchmark bundle manifest

> The `competition.yaml` this benchmark would be described by, plus every file it names: its pages, its terms and its logo. Together with the four task files from `task_files`, that is a complete bundle, which is what makes a saved copy something `create_from_repo` can build from. Without it a saved folder holds a benchmark’s files but not its settings, and cannot be created from at all. No zip is returned: the heavy parts already come down through their own download links, so sending them again here would double the traffic to say nothing new. Requires the `benchmark:read` scope, and the caller must be the creator or a collaborator. The manifest always names an image, terms and at least one page, with stand-ins where the benchmark has none, so a folder written from this answer passes the same checks an upload does.

The `competition.yaml` this benchmark would be described by, plus the text
files it names.

Together with the four task files from [list benchmark
files](/docs/api-reference/endpoint/list-benchmark-files.md), that is a complete
bundle. Which matters more than it sounds: `competition.yaml` sits in the root
of a bundle and names everything else, so a saved copy without it holds a
benchmark's files but not its settings, and [create from
repository](/docs/api-reference/endpoint/create-benchmark-repo.md) cannot read it at
all.

## No zip, on purpose

The scoring program, ingestion program, questions and answers already come down
through their own download links. Sending them again here would double the
traffic to say nothing new. What this returns is the text that has nowhere else
to come from.


## OpenAPI

````yaml GET /api/competitions/{id}/bundle_manifest/
openapi: 3.0.3
info:
  title: BenchGen Platform API
  version: 1.0.0
  description: >-
    One API for the whole BenchGen platform: model catalogue and serving,
    fine-tuning and benchmarks, datasets (knowledge), and billing.


    ## Authentication

    Every request uses the same credential: a platform API token sent as
    `Authorization: Bearer bgn_...`.

    Create tokens in the web app under Profile Settings > Platform API tokens
    (the secret is shown exactly once), or via `POST /api/tokens/` with an
    interactive session. Revoking a token disables it platform-wide within 60
    seconds.


    ## Scopes

    A token carries scopes chosen at creation; a request outside the token's
    scopes gets `403` with an explanatory message.


    | scope | grants |

    |---|---|

    | `models:read` | read model catalogues, job status, logs, GPU info |

    | `models:write` | deploy, train, merge, stop models and jobs |

    | `benchmark:read` | read benchmark runs and results |

    | `benchmark:run` | launch benchmark runs |

    | `benchmark:create` | create benchmarks in your account (drafts, Excel,
    bundles, specs); counts toward the creation limit |

    | `benchmark:manage` | edit and delete benchmarks you own or collaborate on
    |

    | `benchmark:publish` | publish and unpublish benchmarks you own or
    collaborate on |

    | `knowledge:read` | read your datasets and fine-tuning data |

    | `knowledge:write` | create, edit and delete datasets and fine-tuning data
    |

    | `billing:read` | read your balance and usage |

    | `agents:chat` | chat with your own agents through the API |

    | `agents:manage` | manage your agents, knowledge bases and channels |

    | `admin` | everything the account can do (staff accounts only) |


    ## For agents

    This document plus `/api/llms.txt` are the machine-readable entry points.
    Responses are JSON. Errors use conventional status codes; the body carries
    `error` or `message`. Knowledge endpoints return `[{"data": [...], "meta":
    {...}}]`.


    The complete auto-generated schema of every endpoint (including internal
    ones) lives at `/api/public-docs.json` (Swagger 2.0); this document is the
    curated, stable, supported surface.
  contact:
    url: https://benchgen.com
servers:
  - url: https://api.benchgen.com
security:
  - platformToken: []
tags:
  - name: auth
    description: Token introspection for services and integrations
  - name: tokens
    description: Manage your platform API tokens
  - name: models
    description: Model catalogue and serving
  - name: finetune
    description: Fine-tuning jobs, inference deployments, GPUs
  - name: knowledge
    description: Datasets and fine-tuning data (knowledge API)
  - name: billing
    description: Balance and usage
  - name: agents
    description: Chat with your agents (OpenAI-compatible facade)
  - name: benchmark
    description: Public benchmark (competition) listings.
paths:
  /api/competitions/{id}/bundle_manifest/:
    get:
      tags:
        - benchmark
      summary: The bundle manifest for a benchmark
      description: >-
        The `competition.yaml` this benchmark would be described by, plus every
        file it names: its pages, its terms and its logo. Together with the four
        task files from `task_files`, that is a complete bundle, which is what
        makes a saved copy something `create_from_repo` can build from. Without
        it a saved folder holds a benchmark’s files but not its settings, and
        cannot be created from at all. No zip is returned: the heavy parts
        already come down through their own download links, so sending them
        again here would double the traffic to say nothing new. Requires the
        `benchmark:read` scope, and the caller must be the creator or a
        collaborator. The manifest always names an image, terms and at least one
        page, with stand-ins where the benchmark has none, so a folder written
        from this answer passes the same checks an upload does.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The manifest and the files it names.
          content:
            application/json:
              schema:
                type: object
                properties:
                  competition_yaml:
                    type: string
                    description: Write this to competition.yaml in the folder root.
                  files:
                    type: object
                    description: >-
                      Text files the manifest names, path to contents: the pages
                      and the terms. Always includes terms and at least one
                      page, because the upload refuses a bundle without them.
                  logo:
                    type: string
                    description: >-
                      The path of the image the manifest names; its bytes are in
                      binary_files.
                  binary_files:
                    type: object
                    description: >-
                      Binary files the manifest names, path to base64 contents.
                      Holds the logo: the benchmark’s own, or the BenchGen mark
                      when it has none, because the upload refuses a bundle
                      without an image.
      security:
        - PlatformToken: []
components:
  securitySchemes:
    platformToken:
      type: http
      scheme: bearer
      bearerFormat: bgn_ opaque token
      description: >-
        Platform API token created under Profile Settings > Platform API tokens.
        Scopes are fixed at creation.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.