API Upload Project Assets
From zFairs Contest Management
Contents
Upload Project Assets
Upload project images/assets or paperwork files to an existing project.
Authentication
All data API calls are POST (unless noted) with JSON body:
| Field | Required | Description |
|---|---|---|
ApiKey |
Yes* | Private API key for your site. Prefer this over username/password. |
Username / Password |
Yes* | Alternate auth if not using ApiKey. |
FairId |
Yes | Fair GUID from the site URL (f query parameter).
|
Body |
Depends | Request payload. Use {} when no body fields are needed.
|
- Provide either
ApiKeyorUsername+Password.
Calls must be run server-side — do not expose your API key in a browser.
Response envelope
Most endpoints return:
{
Success: true,
Message: null, // error text when Success is false
Body: { ... } // endpoint-specific payload
}
Upload project image / asset
POST /api/data/project/file
fetch('/api/data/project/file', {
method:'POST',
headers:{'Content-Type': 'application/json'},
body: JSON.stringify({
ApiKey:'<Private key>',
FairId: '9df61f13-474b-442f-ac1f-edca7348ef71',
Body: {
ProjectKey: "32161f13-474b-442f-ac1f-edca7348e000",
Base64String: "iVBORw0KGgoAAAANSUhEUgAAAQIAA...", // not required if DownloadFromUrl is set
DownloadFromUrl: "https://yoursite.com/somefile.png", // optional alternative to Base64String
FileName: "myAwesomeFile.png",
Caption: "indescribable"
}
})
})
.then(response => response.json())
.then(data=>{console.log('Success: ',data);})
.catch((error)=>{console.log('Error: ', error);});Upload project paperwork
Same endpoint. Paperwork should be PDF. Set PaperworkFileType from API Get Info → PaperworkFileTypes.
fetch('/api/data/project/file', {
method:'POST',
headers:{'Content-Type': 'application/json'},
body: JSON.stringify({
ApiKey:'<Private key>',
FairId: '9df61f13-474b-442f-ac1f-edca7348ef71',
Body: {
ProjectKey: "32161f13-474b-442f-ac1f-edca7348e000",
PaperworkFileType: 123,
Base64String: "JVBERi0xLjQK...",
DownloadFromUrl: null,
FileName: "form1c.pdf",
Caption: "Form 1C"
}
})
})
.then(response => response.json())
.then(data=>{console.log('Success: ',data);})
.catch((error)=>{console.log('Error: ', error);});Response
{
Success: true,
Message: null,
Body: { ProjectKey: "...", FileName: "myAwesomeFile.png", ... }
}
If the project key is invalid:
{ Success: false, Message: "Project not found with ProjectKey: ..." }
Field notes
- Provide either
Base64StringorDownloadFromUrl. - When
PaperworkFileType> 0, the file is stored as paperwork; otherwise as a project asset/image. - Uploaded files appear on API Get Projects under
projectFiles/paperworkFileswith a/file/showfile/{publicId}path.
Related APIs