Material Creation
Consolidated Material Creation API
POST /api/materials/consolidated/create
POST /api/materials/consolidated/createThis was initially created for our Naviga Propel team. The original endpoint /API/Materials was really complicated with a ton of extra details that weren't generally necessary, so we condensed this one down to just what was really necessary, so this is a good starting point for anyone wanting to import materials.
If you are creating both a material and an order, create the material first, and then when the order is created, the order API can refer to this material record.
This will create a material record independent of a campaign, and then during the campaign creation (see Campaign API), then this material record can be referenced
JSON for creating material records
{
"MaterialType": "Print",
"Description": "string",
"AdvertiserID": "string",
"DateReceived": "2025-12-22",
"ExpiresOn": "2025-12-22",
"ExternalID": "string",
"PrintInformation": {
"SizeID": "string",
"ColorID": "string"
},
"DigitalInformation": {
"CreativeType": "Image",
"AdServerID": "string",
"ClickURL": "string",
"SizeID": "string",
"CodeSnippet": "string"
},
"Components": [
{
"Description": "string",
"FileName": "string",
"IsPreviewImage": true,
"IsHiResFinal": true,
"FileBytesAsBase64": "string"
}
]
}MaterialType
Most commonly used options here are 'Print' or 'Digital'. If Print, then below the Print Information should be included and if Digital then the Digital Information should be included. Additionally 'ClassifiedDisplay' and 'ClassifiedText' will bring in materials for "Listing" classified ads, either a liner type ad or a liner ad that has been uploaded as a pdf.
Yes
Description
This will populate the Material Description field on the material record, and while not required here, for certain security groups, it may be required, so someone editing later may be prevented from saving if it is missing, so best to fill it in.
No, but recommended
AdvertiserID
Enter the ID for the Advertiser Account. The system will let you import it without an advertiser ID, but it isn't going to be very usable without one. Someone internal to the system isn't going to be able to find it without the ID unless it is attached to the advertiser.
No, but recommended
DateReceived
This will default to today's date in Swagger. If it is missing, there will be no date in the UI, so it is recommended to populate with todays date. yyyy-mm-dd format
No, but recommended
ExpiresOn
If blank, default will be 12 months from today, unless you have selected something different in System Setup (accessible by Naviga Personnel in your system). Otherwise can set this to desired date here. The material will still be in the system, but expiration means it will no longer be visible on the client record for easy pickups. Just keeps things tidy.
No
ExternalID
Enter an ID here if you are using an external system and want to reference that number
No
PrintInformation { }
required for print materials
SizeID
Modular size ID from Setup -> Advertising -> Sizes Setup. Only Modular Sizes are currently supported.
Yes, if Print
ColorID
ID from Print Color Setup (Setup -> Advertising -> Print Color Setup)
No
DigitalInformation { }
required for digital materials
CreativeType
Available Choices here: Image HTML5 ThirdParty CampaignManager Custom NativeFormat CustomCreativeTemplate StandardCreativeTemplate Video Overlay Redirect Audio AudioRedirect Images and 3rd Party is all that is fully supported as far as additional related fields exposed in the API, but the above are all the codes for creative types that can be set.
Yes
AdServerID
This is the ID from Setup -> Admin -> Ad Server Integration setup in the Advertising Module
No
ClickURL
This will populate the ClickThroughURL for the material. It is required for the material to send to GAM
Yes
SizeID
Size ID from Setup -> Advertising -> Sizes Setup.
Yes
CodeSnippet**
If the Creative Type is ThirdParty this will be the tag that gets copy and pasted into the Code Snippet box on screen. This box is only seen when the creative type is ThirdParty or Custom. (Please see below for some additional details about the code snippet field)
No
Components [ ]
This can repeat for as many components as are needed. If the material is print, and you are not also including a jpg image as the preview image, let Naviga Personnel know and we can enable a process which searches the system overnight and creates jpg preview images. While not required, having a jpg preview for each pdf is a nice to have if you want to view a thumbnail onscreen or include an image on the invoice or affidavit.
Yes
Description
This will populate the description column on the component record.
No
FileName
This will populate the filename column on the component record.
Yes
IsPreviewImage
true/fFalse are the options here
Yes
IsHiResFinal
true/false are the options here - there should only be one hi res final image for any material ID
Yes
FileBytesAsBase64
This will be a long code representing the actual material in Base64 Format
Yes
If there are just a few additional data points that are needed, let us know. You could use the older endpoints, but we would prefer to add a couple of fields for you here rather than pointing you to the older endpoints due to the complexity of those other ones. Also, currently we just have a POST here on the consolidated version, but if you need a get or an update, let us know. Wouldn't be difficult to add, but we just haven't needed it yet.
**Additional details on the Code Snippet field
The API will have issues with " character which may very well be in the tag, so before passing it into Swagger or other tool, you must replace each " character with \" instead. Upon import, the API will remove the extra \ field so what actually gets imported will be correct.
Here is a real-life 3rd party ad tag script (note the many items in quotes):

Before passing that into Naviga Ad, I ran it through this utility - https://www.freeformatter.com/json-escape.html and selected Escape JSON, which then gave me this:

Passing that in through Swagger instead of the original still gives me this inside the Code Snippet box in Naviga Ad:

Clicking the Preview button renders the ad for me and I can see that it is valid code.
Last updated
Was this helpful?