> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/partner/campaign-management-api/creativeassets/uploadfile-2.md).

# Upload a campaign file - v4

{% hint style="info" %}
File upload guidelines

* **File size limit**: The maximum supported file size is 4 GB.
* **Supported banner file types**: The API currently accepts the following file formats: PNG, JPEG, and JPG.
* **Supported banner X file types**: The API currently accepts the following file formats: PNG, JPEG, JPG, SVG, and GIF.
* **Supported content standard display logo file types**: The API currently accepts the following file formats: JPEG, JPG, and PNG.
* **Image dimension**: Image dimensions are currently validated against the retailer's content standard.
* **Handling multiple files**: If multiple files are submitted in a single request, only the first file will be processed while the remaining files will be ignored.
* **BannerX**: For `Campaign_File_Type_Banner_X_Image`, providing a slot ID, and content standard ID , slotType, imageType are mandatory.
* \*\*Banner \*\*: For `Campaign_File_Type_Banner_Image`, providing slot ID , content standard ID , team ID is mandatory.
* **Brand Page**: For `Campaign_File_Type_Brand_Page_Image`, providing the Brand Page image is mandatory. Supported formats include PNG, JPEG, JPG, SVG, and GIF.
  {% endhint %}

{% hint style="info" %}
File upload URL

When uploading your creative asset file, ensure you provide a complete absolute path to the file. If you are copying example test code from the documentation to use in your environment, be sure to update the file location before executing the command. For example:

curl --request POST --url 'https\://\<your-url>.test.com/v4/campaign-file-upload?contentStandardId=test1\&imageType=IMAGE\_TYPE\_UNSPECIFIED\&campaignFileType=CAMPAIGN\_FILE\_TYPE\_BANNER\_IMAGE' --header 'accept: application/json' --header 'Authorization: Bearer \<your-token>' --header 'content-type: multipart/form-data' --form "file=**@/Users/test/downloads/apple.png**"
{% endhint %}

## Upload a campaign file - v4

> This endpoint allows uploading different types of campaign files including banners, banner X, and brand pages. It includes support for hero image display modes and background positioning controls. Accepted formats include JPEG, JPG, PNG, GIF, PDF, and SVG for banners, banner X, and brand page campaigns, along with standard PDF files for content. Display logos must be in JPEG, JPG, or PNG format.

```json
{"openapi":"3.0.0","info":{"title":"File Upload API","version":"a21"},"servers":[{"description":"Campaign server","url":"https://campaign.<env>.citrusad.com/v4"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"scheme":"bearer","type":"http"}},"schemas":{"campaignfileupload_body":{"properties":{"file":{"description":"The campaign file to upload, which can include an image, content standard display logo, or content standard PDF for banners and banner X. \n  - Supported image formats are jpeg, jpg, png, gif, PDF, and SVG. \n  - Display logos must be in jpeg, jpg, or png format.","format":"binary","type":"string"}},"required":["file"],"type":"object"},"v3UploadFileResponse":{"properties":{"fileId":{"description":"The unique identifier of the uploaded file.","type":"string"},"fileUrl":{"description":"The URL to access the file uploaded.","type":"string"}},"type":"object"},"rpcStatus":{"properties":{"code":{"type":"integer"},"details":{"items":{"type":"object"},"type":"array"},"message":{"type":"string"}},"type":"object"}}},"paths":{"/campaign-file-upload":{"post":{"description":"This endpoint allows uploading different types of campaign files including banners, banner X, and brand pages. It includes support for hero image display modes and background positioning controls. Accepted formats include JPEG, JPG, PNG, GIF, PDF, and SVG for banners, banner X, and brand page campaigns, along with standard PDF files for content. Display logos must be in JPEG, JPG, or PNG format.","operationId":"uploadFile","parameters":[{"description":"The template ID that determines the type of file that can be uploaded and where it will appear in the campaign. This configuration defines accepted file formats, size limits, and display requirements.","in":"query","name":"contentStandardId","schema":{"type":"string"}},{"description":"The specific location where the image will appear in the campaign template. Ensures the image adheres to predefined slot requirements and validations. Examples include left_ribbon, top_banner, or side_panel.","in":"query","name":"slotId","schema":{"type":"string"}},{"description":"Placement options for the image within the campaign include main background, secondary background, hero image, and more.","in":"query","name":"slotType","required":false,"schema":{"enum":["SLOT_TYPE_BANNER","IMAGE_TYPE_DOUBLE_TILE","IMAGE_TYPE_SINGLE_TILE"],"type":"string"}},{"description":"The unique identifier of the campaign team.","in":"query","name":"teamId","required":false,"schema":{"type":"string"}},{"description":"Manager team ID for the campaign. Applicable only to fixed tenancy campaigns.","in":"query","name":"managerTeamId","required":false,"schema":{"type":"string"}},{"description":"Placement options for the image within the campaign include main background, secondary background, hero image, and more.","in":"query","name":"imageType","required":false,"schema":{"enum":["IMAGE_TYPE_PRIMARY_BACKGROUND","IMAGE_TYPE_SECONDARY_BACKGROUND","IMAGE_TYPE_PRIMARY_HERO","IMAGE_TYPE_SECONDARY_HERO"],"type":"string"}},{"description":"Specifies the campaign file type: Supported types include: -\n  - CAMPAIGN_FILE_TYPE_BANNER_IMAGE: Image for your banner campaign. -\n  - CAMPAIGN_FILE_TYPE_BANNER_X_IMAGE: Image for your banner X campaign. -\n  - CAMPAIGN_FILE_TYPE_BANNER_X_CONTENT_STANDARD_DISPLAY_LOGO: Display logo for your banner X content standard file. \n  - CAMPAIGN_FILE_TYPE_BANNER_CONTENT_STANDARD_DISPLAY_LOGO: Display logo for\nyour banner content standard file. -\n  - CAMPAIGN_FILE_TYPE_BANNER_X_CONTENT_STANDARD_PDF: Content standard PDF for\nyour banner X campaign. \n  - CAMPAIGN_FILE_TYPE_BANNER_CONTENT_STANDARD_PDF:\nContent standard PDF for your banner campaign. \n  - CAMPAIGN_FILE_TYPE_BRAND_PAGE_IMAGE: Image for your BRAND PAGE campaign.","in":"query","name":"campaignFileType","required":true,"schema":{"enum":["CAMPAIGN_FILE_TYPE_BANNER_IMAGE","CAMPAIGN_FILE_TYPE_BANNER_X_IMAGE","CAMPAIGN_FILE_TYPE_BANNER_X_CONTENT_STANDARD_DISPLAY_LOGO","CAMPAIGN_FILE_TYPE_BANNER_X_CONTENT_STANDARD_PDF_FILE","CAMPAIGN_FILE_TYPE_BANNER_CONTENT_STANDARD_DISPLAY_LOGO","CAMPAIGN_FILE_TYPE_BANNER_CONTENT_STANDARD_PDF_FILE","CAMPAIGN_FILE_TYPE_BRAND_PAGE_IMAGE"],"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/campaignfileupload_body"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/v3UploadFileResponse"}}},"description":"File uploaded successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpcStatus"}}},"description":"There was a problem with input."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpcStatus"}}},"description":"Login failed or token not valid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpcStatus"}}},"description":"Access denied due to insufficient permissions."},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/rpcStatus"}}},"description":"An unexpected error response."}},"summary":"Upload a campaign file - v4"}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/partner/campaign-management-api/creativeassets/uploadfile-2.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
