LinkedIn's Pay For Performance (P4P) Reports API provides insights into how your P4P jobs and contract have performed. There are 2 types of reports, Job and Budget, you can call to get various information such as performance, daily spent & clicks, and lifetime budget.
Job Reports API, regardless of "By IDs" and "By Date Range", allows you or your customer to fetch daily job performance metrics by externalJobPostingId or partnerJobCode, if applicable, between specified dates. Performance metrics include jobPostingInfo (which includes jobTitle, companyDetails, and more) as well as lifetimeJobBudgetInfo and performance data under jobPerformanceMetrics. "Job Reports By IDs" will require an additional list of externalJobPostingId as a parameter, so you can only fetch metrics for specific jobs. "Job Reports By Date Range" will only require a specific date range as an input, but you will need to manage paginations to ensure no performance degrading.
Budget Reports API is mainly for you as a partner to view remaining budget balance and expiration of your LinkecIn P4P contract as well as check the total lifetime spent of it.
Reports APIs are not mandatory to implement based on you and your customers' needs. However, to ensure future capability, we will ask you to demonstrate your understanding of these reports during certification. Also, you will still need to show that you can submit sample requests to both reports during that demonstration. In this case, please note that the demo can happen with any 3rd party REST client or Curl calls as we are verifying the awareness, not the actual adoption.
Important
Job Reports will not include data from the current UTC day and data will be retained for one year. An example of the UTC cut-over is, if you posted a job at 5 PM Pacific Time on 1/1, which is 1 AM 1/2 (tomorrow) in UTC, then the job may take up to 24 hours (1/3 in UTC) to show up in the reports.
Charge or spent-related data like lifetimeBudgetSpent and jobPerformanceMetrics will take up to 48 hours to reflect the final amounts. The amount before 48 hours from the time the charge was incurred may be an estimated value.
If a job was CLOSED before any charge was incurred, then the job may not appear in reports.
Calling the same date range multiple times within the UTC day will NOT result in displaying new job IDs in reports as they are capped to yesterday's UTC date.
API Authorization
All requests below require access tokens obtained via the OAuth2.0 Client Credentials flow. You MUST use the token from the same Child Developer Application (or clientId) as you created the job from.
Note
We strongly recommend to use same access token for all concurrent and consecutive calls. An access token has a lifespan of 30 mins. Only on expiry of the existing token should a new token should be generated.
Check Job Reports By IDs
Query Parameters
Field Name
Description
Type
Required
ids
List of the unique external partner job identifiers, such as externalJobPostingId or partnerJobCode. You can query up to 10 per request.
String[].
Yes
dateRange
Date range to fetch reports. Both start and end dates are inclusive, and one should provide valid day, month, and year values. The start date must fall within a 1-year retention period of the jobs. The end date can not be later than yesterday. One can query a max of 31 days per call. If you want to query a date range that contains two different months, then you must query twice for each month.
Date range to fetch reports from and to. Both start and end dates are inclusive. One must provide valid day, month, and year values for both fields. The start date must fall within a one-year retention period, and the end date can not be later than yesterday in UTC. The maximum number of days requested can not exceed a 7-day time frame.
Budget Reports API allows you as our partner to fetch your lifetime budget information. Please note that information does not include the data from today in UTC.
Check Budget Reports Sample Request
Note
This report is to view overall budgets at the partner level, so you must utilize the {access_token} associated with the Parent, not Child, Developer Application.
This is a versioned API. Linkedin-Version is required to specify the right version to call.
Accumulated monetary charges of the job posting from the start of the job until the job is closed or current day. Please note that Job Reports By Date Range does not display lifetimeJobBudgetInfo amounts.
Three schemas below are common among LinkedIn's APIs.
PartnerReportBudgetInfo Object Schema
Field Name
Description
Type
serviceTermBudgetSpent
Accumulated monetary charge across all P4P jobs under the partner by Developer Application. The currency type is the same as in serviceTermBudgetLimit.
Day represented in integer. Valid range from 1 to 31 depending on month.
Int
Yes
month
Month represented in integer. Valid range from 1 to 12.
Int
Yes
year
Year represented in integer.
Int
Yes
Reports API Error Details
Error Code
Http Status
Error Message
Reason
Resolution
6000
403
Caller is unauthorized to access the job reporting, unable to find valid customer developer application id.
Access Denied
Ensure that you are using the correct customer application credentials.
6001
403
Caller is unauthorized to access the budget reporting, unable to find valid parent developer application id.
Access Denied
Ensure that you are using the correct parent application credentials.
6003
500
Failed to find partner level service term metadata.
Internal server error
Please reach out to support.
6004
404
No partner level budget information found.
Resource Not Found
Ensure that you are using the correct partner application credentials.
6005
500
Failed to find partner level budget information.
Internal server error
Please reach out to support.
6006
400
Invalid DateRange! Date range query param should have start and end date.
Bad Request
Ensure that you are using the right date range parameters. Please provide start and end date as per the schema.
6007
400
Invalid DateRange! Start and end date is required with a valid day, month & year field.
Bad Request
Please refer to the schema documentation and make sure all the required fields are present for the date range param.
6008
400
Invalid DateRange! End date can not be before start date.
Bad Request
Ensure that you are not providing an end date that is outside the one year period.
6009
400
Invalid DateRange! Start date can not be outside of one year retention period.
Bad Request
Ensure that you are not providing a start date that is outside the one year period.
6010
400
Invalid DateRange! Today or future UTC date reporting metrics is not supported.
Bad Request
Ensure that you are not providing a today or future date as the start date in UTC.
6011
400
Invalid DateRange! Start and end date should be within the range of 1 calendar month.
Bad Request
Ensure that you are not providing a date range that is not within 1 calendar month, e.g. Fetching 08/26/2023 to 09/05/2023 is not acceptable. You can query API with 08/26 to 08/31 or 09/01 to 09/05.
6012
500
Failed to find job posting details for provided external job posting ids.
Internal server error
Please reach out to support.
6013
404
No job posting information found for a given externalJobPostingIds: {external-job-posting-id}.
Resource Not Found
Please ensure you are using the same developer application/OAuth token as you posted the job. If you were, the job may have de-duped due to the similarities with other LinkedIn jobs you posted.
6014
404
No active or revoke budget information found for the provided partner.
Resource Not Found
Ensure that you are using the correct partner application credentials.
6015
500
Failed to find lifetime job spend information for a provided external job posting ids.
Internal server error
Please reach out to support.
6016
500
Internal error while fetching lifetime job spend information for a provided external job posting ids.
Internal server error
Please reach out to support.
6017
500
Failed to find lifetime job budget limit information for a provided external job posting ids.
Internal server error
Please reach out to support.
6018
500
Failed to find daily job charges for a provided external job posting ids.
Internal server error
Please reach out to support.
6019
500
Internal error while fetching analytics information for provided external job posting ids.
Internal server error
Please reach out to support.
6020
500
Failed to find job performance analytics for a provided external job posting ids.
Internal server error
Please reach out to support.
6021
400
Maximum supported external job posting ids per request is 10.
Bad Request
Ensure that you are not calling this api with more than 10 external job posting ids.
6022
400
Provided application id is not supported for partner level budget reports.
Bad Request
Ensure that you are using the correct partner application credentials.
6023
400
Invalid DateRange! Number of days between start and end date should not be more than 7 days.
Bad Request
Ensure that you are not providing a date range that is within the 7 day range (Start & End dates are inclusive).
6024
500
Failed to find daily job charges for a provided partner.
Internal server error
Please reach out to support.
6025
500
Failed to find daily job analytic metrics for a provided partner.
Internal server error
Please reach out to support.
6026
500
Failed to find a set of external job posting ids for a provided partner.