# Assume you have already uploaded the PDF and obtained FILE_ID
curl https://api.openai.com/v1/responses   -H "Authorization: Bearer $OPENAI_API_KEY"   -H "Content-Type: application/json"   -d '{
    "model": "gpt-5",
    "prompt": {
      "id": "pmpt_abc123",
      "variables": {
        "topic": "Dragons",
        "reference_pdf": {
          "type": "input_file",
          "file_id": "file-abc123"
        }
      }
    }
  }'
```

## Message formatting with Markdown and XML

When writing `developer` and `user` messages, you can help the model understand
logical boundaries of your prompt and context data using a combination of
Markdown formatting and XML tags.

Markdown headers and lists can be helpful to mark distinct sections of a prompt,
and to communicate hierarchy to the model. They can also potentially make your
prompts more readable during development. XML tags can help delineate where one
piece of content (like a supporting document used for reference) begins and
ends. XML attributes can also be used to define metadata about content in the
prompt that can be referenced by your instructions.

In general, a developer message will contain the following sections, usually in
this order (though the exact optimal content and order may vary by which model
you are using):

- **Identity:** Describe the purpose, communication style, and high-level goals
  of the assistant.
- **Instructions:** Provide guidance to the model on how to generate the
  response you want. What rules should it follow? What should the model do, and
  what should the model never do? This section could contain many subsections as
  relevant for your use case, like how the model should
  [call custom functions](https://platform.openai.com/docs/guides/function-calling).
- **Examples:** Provide examples of possible inputs, along with the desired
  output from the model.
- **Context:** Give the model any additional information it might need to
  generate a response, like private/proprietary data outside its training data,
  or any other data you know will be particularly relevant. This content is
  usually best positioned near the end of your prompt, as you may include
  different context for different generation requests.

Below is an example of using Markdown and XML tags to construct a `developer`
message with distinct sections and supporting examples.

Example prompt

```text