FrantzPublic API
Guide

Moving from v1

Version 2 does what v1 does, with standard sign-in, real status codes and the same names everywhere. Version 1 keeps working while you move, and the job adverts you have sent come with you.

What comes with you

v1 and v2 share the same job adverts. A job ad you sent in v1 with ProjectReference ad-12345 is the job advert with externalReference ad-12345 in v2, and its ConnectID is the feAdId you have. The script on its page keeps working, and the statistics go on.

You can move one call at a time: what you send through v2 is there in v1, and the other way round.

The calls

v1v2
GET Auth/Authorize?apiKey=POST/api/v2/auth/token with client_id and client_secret
POST Partner/GetPixelScriptPOST/api/v2/job-adverts
POST Partner/GetPixelScript with feAdIdPATCH/api/v2/job-adverts/{connectId}
POST Partner/GetCampaignStatisticsGET/api/v2/job-adverts/{connectId}/statistics
POST Partner/GetFrantzSegmentsGET/api/v2/audiences

Sign-in

v1v2
An API key in the address of Auth/AuthorizeA client id and secret, sent in a form to POST /api/v2/auth/token. Ask Frantz for a client.
A token that lasts 30 daysA token that lasts an hour (expires_in)
apiToken in the body of every callAuthorization: Bearer header
TokenExpiracy in every responseGone. Use expires_in from the token response.
One token for everythingScopes: job-adverts:write and statistics:read

See Sign-in and scopes.

Errors

v1 answers 200 to almost everything and puts the outcome in StatusCode and StatusMessage in the body. v2 answers with the real HTTP status, and with Problem Details when something is wrong. Check the HTTP status, not the body.

GetPixelScript becomes POST /job-adverts

v1 fieldv2 field
ProjectReferenceexternalReference (required, up to 50 characters)
LandingPageUrllandingPageUrl (required)
Titletitle
campaignStartDate, campaignEndDatestartDate, endDate, as dates: 2026-11-30
ApplicationDueDateapplicationDueDate
AudienceIdaudienceId
STYRKstyrk
BannerShortText, BannerLogoUrl, BannerImageUrlbannerShortText, bannerLogoUrl, bannerImageUrl
feAdId in the request, to update a pixelThe ConnectID in the address of PATCH /api/v2/job-adverts/{connectId}, or send the same externalReference again
v1 responsev2 response
feAdIdconnectId
frantzPixelScript, landingPageTopScriptscript, the same tag
ReportURLreportUrl
-All the job advert's fields, and createdDate and updatedDate

The rules are the same as in v1: one job advert per reference, safe to repeat, and an ended job advert sent again without an end date runs for another 21 days. New in v2: 201 for a new job advert and 200 for one you had, a null field stays as it is, and "" clears a text field.

GetCampaignStatistics becomes GET /job-adverts/{connectId}/statistics

The ConnectID (v1's connectID) moves from the body into the address.

v1 fieldv2 field
StatsDatachannels
connectID on every rowconnectId, once, at the top
channelIdchannelId
network: Meta, LinkedIn, ...network in lower case: meta, linkedin, ...
mediaNamename
bannerViewsimpressions
bannerClicksclicks
landingpageViewspageViews
clickedReadMorereadMoreClicks
hasReadTextreaders
searchButtonapplyClicks
avgTimeavgTimeSeconds
ReportUrlreportUrl on the job advert
-dataUntil, the last day the numbers include

The numbers are the same as in v1. See Statistics.

GetFrantzSegments becomes GET /audiences

v1v2
segmentLevel: Industry, Category, Speciality?level=industry, category or speciality
feAdId, for the segment of a pixelaudienceId from GET /api/v2/job-adverts/{connectId}, then GET /api/v2/audiences/{audienceId}
-?title=, the audiences that fit a job title
Segments, CountSegmentsitems
SegmentLevellevel
AudienceIdaudienceId
Industry, IndustryReachindustry.name, industry.reach
Category, CategoryReachcategory.name, category.reach
Speciality, SpecialityReachspeciality.name, speciality.reach
StyrkKodestyrk

Step by step

  1. Ask Frantz for a client for the test environment, with the scopes you need.
  2. Build the sign-in, and send the token as Authorization: Bearer.
  3. Move the calls one at a time, and check the HTTP status instead of StatusCode.
  4. Test against https://apitest.frantz.no.
  5. Ask Frantz for a client for production, and switch over.
  6. Tell Frantz when you no longer use v1, so your API key can be switched off.