---
source_url: "https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/conversions-api?view=li-lms-2026-06"
title: "Conversions API - LinkedIn | Microsoft Learn"
mirrored_at: 2026-08-14T15:38:11.763Z
host: learn.microsoft.com
cited_in_42a: true
mirror_canonical: "https://index.42a.ai/learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/conversions-api__q__view_li-lms-2026-06"
---

> **Original source:** https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/conversions-api?view=li-lms-2026-06

Warning

**Deprecation Notice:** The Marketing Version 202507 (Marketing July 2025) has been sunset. We recommend that you migrate to the latest [versioned APIs](https://learn.microsoft.com/en-us/linkedin/marketing/versioning?view=li-lms-2026-06) to avoid disruptions. For information on all the supported versions, refer to the [migrations](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/migrations?view=li-lms-2026-06#api-migration-status) documentation. If you haven’t yet migrated and have questions, submit a request on the [LinkedIn Developer Support Portal](https://www.linkedin.com/help/linkedin/ask/dsapi).

The LinkedIn Conversions API allows advertisers to stream conversion events from their server to LinkedIn primarily to measure LinkedIn marketing campaign performance, regardless of where the conversion occurs. This data is used to optimize campaigns and improve attribution, data reliability, and delivery. For more information, refer to [LinkedIn Conversions API](https://www.linkedin.com/help/lms/answer/a1680223).

## Permissions

Permission

Description

`rw_conversions`

Upload your conversion data to LinkedIn and manage your conversion tracking.

`r_ads`

Read access to an authenticated member's ad accounts.

The following conditions must be met for a successful call:

-   Scope permissions to `rw_conversions`, `r_ads`.
-   The user assigning permission holds one of the following roles in the ad account:
    -   `ACCOUNT_BILLING_ADMIN`
    -   `ACCOUNT_MANAGER`
    -   `CAMPAIGN_MANAGER`
    -   `CREATIVE_MANAGER`

For more information on ad account roles and permissions, refer to the following:

-   [Ad Account User Role Definitions](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/account-access-controls?view=li-lms-2026-06#ad-account-user-role-definitions).
-   [Create and Manage Ad Account Users](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-account-users?view=li-lms-2026-06).

Scope permissions for [3-legged OAuth](https://learn.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?view=li-lms-2026-06)

-   `rw_conversions` (Read/Write).
-   `r_ads` (Read)

## Requirements

Following are the requirements to send conversion events:

1.  [Create a Conversion Rule](#create-a-conversion-rule).
2.  [Associate campaign(s) to the conversion rule](#associate-campaigns-to-conversion-rule).
3.  [Stream conversion events](#streaming-conversion-events).

## Conversion Rule Schema

For more information on the schema, refer to the [Conversions API Schema](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/conversions-api-schema?view=li-lms-2026-06#conversions-api-schema).

## Create a Conversion Rule

Create a conversion rule with the `POST /conversions` endpoint for each conversion type that you want to track and set `conversionMethod` to `CONVERSIONS_API` for streaming conversion events through API. Each conversion rule should include a conversion name, ad account URN, conversion method, and type (key conversion behavior). You may include the optional query parameter `autoAssociationType` and set it to `ALL_CAMPAIGNS` to associate the conversion rule to all campaigns (limited to 200 active campaigns).

Note

-   `X-Restli-Protocol-Version: 2.0.0` must be passed as a request header in all your API requests.
-   `Linkedin-Version: {yyyymm}` must be passed as a request header in all your API requests as per [Versioning](https://learn.microsoft.com/en-us/linkedin/marketing/versioning?view=li-lms-2026-06).

#### Sample Request

-   [http](#tabpanel_1_http)
-   [curl](#tabpanel_1_curl)

```
POST https://api.linkedin.com/rest/conversions?autoAssociationType=ALL_CAMPAIGNS
```

```
{
  "name": "Conversion API Segment 1",
  "account": "urn:li:sponsoredAccount:5123456",
  "conversionMethod": "CONVERSIONS_API",
  "postClickAttributionWindowSize": 90,
  "viewThroughAttributionWindowSize": 30,
  "attributionType": "LAST_TOUCH_BY_CAMPAIGN",
  "type": "LEAD"
}
```

#### Sample Response

-   A `201 Created` HTTP status code is returned if the request is successful and conversion rule ID is in the `id` field in response body and in `x-restli-id` response header.
-   A `400 Bad Request` is returned if the request doesn't pass the validation check. Please check the error message to understand what validation failed.

All conversion rules associated with an ad account can be retrieved using the endpoint that takes a `sponsoredAccount` URN in the `account` parameter. Parse the response to filter active Conversions API rules where `conversionMethod` is set to `CONVERSIONS_API` and `enabled` is set to `true`.

Starting with 202605 version, you may include optional query parameter `conversionOwnershipTypes` and set it to `List(OWNED,SHARED)` to also return shared conversion rules across ad accounts under the same Business Manager, indicated by `ownershipType` field in the response elements. If the `conversionOwnershipTypes` query parameter is not included in the request, only owned conversions created in the same ad account are returned by default.

#### Sample Request

-   [http](#tabpanel_2_http)
-   [curl](#tabpanel_2_curl)

```
GET https://api.linkedin.com/rest/conversions?q=account&account=urn%3Ali%3AsponsoredAccount%3A{sponsoredAccountId}&conversionOwnershipTypes=List(OWNED,SHARED)
```

#### Sample Response

```
{
  "elements": [
    {
      "postClickAttributionWindowSize": 90,
      "viewThroughAttributionWindowSize": 30,
      "created": 1563230311551,
      "type": "LEAD",
      "enabled": true,
      "name": "Conversion API Segment 2",
      "lastModified": 1563230311551,
      "id": 104012,
      "attributionType": "LAST_TOUCH_BY_CAMPAIGN",
      "conversionMethod": "CONVERSIONS_API",
      "ownershipType": "OWNED",
      "account": "urn:li:sponsoredAccount:51234560"
    },
    {
      "postClickAttributionWindowSize": 90,
      "viewThroughAttributionWindowSize": 30,
      "created": 1563230255308,
      "type": "PURCHASE",
      "enabled": true,
      "name": "Conversion API Segment 3",
      "lastModified": 1563230265652,
      "id": 104004,
      "attributionType": "LAST_TOUCH_BY_CAMPAIGN",
      "conversionMethod": "CONVERSIONS_API",
      "ownershipType": "OWNED",
      "account": "urn:li:sponsoredAccount:51234560"
    }
  ]
}
```

Note

For more information on other HTTP methods such as GET, BATCH GET, and UPDATE, refer to [Conversion Tracking](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/conversion-tracking?view=li-lms-2026-06).

## Associate Campaigns to Conversion Rule

When creating a new conversion rule with the `POST /conversions` endpoint as shown above, the rule is associated with first 200 active campaigns only when `autoAssociationType` is set to `ALL_CAMPAIGNS`. If you do not use `autoAssociationType=ALL_CAMPAIGNS` and would like to associate the conversion rule with specific campaigns, use the Campaign Conversions API mentioned below before proceeding to [Streaming Conversion Events](#streaming-conversion-events).

Campaign Conversions API can be used to associate specific campaigns to a Conversion rule URN. Only the campaigns associated with the conversion rule are eligible for attributing tracked conversions for reporting.

Advertisers can also associate campaigns to a conversion rule directly from the LinkedIn Campaign Manager tool (go to Ad Account > Measurement > Conversion tracking, select the conversion rule created in the previous step where Data source should list the selected partner integration or Direct API, review your conversion details and selected ad sets, and select all ad sets to track conversions or [add conversions to existing campaigns](https://www.linkedin.com/help/lms/answer/a484456)).

Note

-   Refer [Search for Campaigns](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads/account-structure/create-and-manage-campaigns?view=li-lms-2026-06#search-for-campaigns) API to get list of active sponsored campaign URNs and then pass them to this endpoint.
-   `PartnerConversionURN` is of the format `urn:lla:llaPartnerConversion:ID` where you need to replace ID with the conversion ID extracted when creating the conversion rule in this [step](#create-a-conversion-rule) by parsing `id` field from its response body or `x-restli-id` response header .
-   It is important to associate each conversion with an active campaign, as conversions can only be attributed to campaigns they are associated with. Associate your conversions with as many applicable campaigns as possible to maximize attribution and visibility.

```
PUT https://api.linkedin.com/rest/campaignConversions/(campaign:{sponsoredCampaignURN},conversion:{conversionURN})
```

#### Sample Request

-   [http](#tabpanel_3_http)
-   [curl](#tabpanel_3_curl)

```
PUT https://api.linkedin.com/rest/campaignConversions/(campaign:urn%3Ali%3AsponsoredCampaign%3A337643194,conversion:urn%3Alla%3AllaPartnerConversion%3A70203)
```

```
{
  "campaign": "urn:li:sponsoredCampaign:337643194",
  "conversion": "urn:lla:llaPartnerConversion:70203"
}
```

#### Sample Response

A successful response returns a `204 No Content` HTTP status code.

### Batch Associate Multiple Campaigns to Conversion Rule

Multiple campaign conversions can be created with a Batch Update method that accepts `ids` parameter with a list of campaign URN and conversion URN. The campaign and conversion URNs should be passed in a list format and URL encoded as shown in the following examples. Be sure to include request header 'X-RestLi-Method: BATCH\_UPDATE' to indicate batch update.

```
PUT https://api.linkedin.com/rest/campaignConversions?ids=List((campaign:{sponsoredCampaignURN},conversion:{conversionURN}))
```

#### Sample Request

-   [http](#tabpanel_4_http)
-   [curl](#tabpanel_4_curl)

```
PUT https://api.linkedin.com/rest/campaignConversions?ids=List((campaign:urn%3Ali%3AsponsoredCampaign%3A345396555,conversion:urn%3Alla%3AllaPartnerConversion%3A104004),(campaign:urn%3Ali%3AsponsoredCampaign%3A345396777,conversion:urn%3Alla%3AllaPartnerConversion%3A104004))
```

```
{
 "entities":
	{
		"(campaign:urn%3Ali%3AsponsoredCampaign%3A345396555,conversion:urn%3Alla%3AllaPartnerConversion%3A104004)":{
			"campaign":"urn:li:sponsoredCampaign:345396555",
			"conversion":"urn:lla:llaPartnerConversion:104004"
		},
		"(campaign:urn%3Ali%3AsponsoredCampaign%3A345396777,conversion:urn%3Alla%3AllaPartnerConversion%3A104004)":{
			"campaign":"urn:li:sponsoredCampaign:345396777",
			"conversion":"urn:lla:llaPartnerConversion:104004"
		}
 	}
}
```

#### Sample Response

```
{
    "results": {
        "(campaign:urn%3Ali%3AsponsoredCampaign%3A345396555,conversion:urn%3Alla%3AllaPartnerConversion%3A104004)": {
            "status": 204
        },
        "(campaign:urn%3Ali%3AsponsoredCampaign%3A345396777,conversion:urn%3Alla%3AllaPartnerConversion%3A104004)": {
            "status": 204
        }
    },
    "errors": {}
}

```

For more information on other HTTP methods like GET, FINDER, DELETE etc., Refer [Campaign conversions](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/conversion-tracking?view=li-lms-2026-06#campaign-conversions).

* * *

## Streaming Conversion Events

Stream conversion events from your server to LinkedIn on the conversion rule previously [created](#create-a-conversion-rule), using the `/conversionEvents` endpoint. Each event should be accompanied by one or more user identifiers that are used for matching with LinkedIn.

Note

Explore the [Payload Builder](https://www.linkedin.com/developers/payload-builder) to create the conversion events payload based on your inputs. For more information, refer to the [payload builder](https://learn.microsoft.com/en-us/linkedin/marketing/conversions/conversions-payload-builder?view=li-lms-2026-06) documentation.

```
POST https://api.linkedin.com/rest/conversionEvents
```

### Conversion Events Schema

For more information on the schema, refer to [Streaming Conversion Events Schema](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/ads-reporting/conversions-api-schema?view=li-lms-2026-06#streaming-conversion-events-api-schema).

### Adding Single Conversion Event

This endpoint allows you to stream a single conversion event, including different match identifiers for the same user.

#### Sample Request

-   [http](#tabpanel_5_http)
-   [curl](#tabpanel_5_curl)

```
POST https://api.linkedin.com/rest/conversionEvents
```

```
{
  "conversion": "urn:lla:llaPartnerConversion:123",
  "conversionHappenedAt": 1590739275000,
  "conversionValue": {
    "currencyCode": "USD",
    "amount": "50.0"
  },
  "user": {
    "userIds": [
      {
        "idType": "SHA256_EMAIL",
        "idValue": "bad8677b6c86f5d308ee82786c183482a5995f066694246c58c4df37b0cc41f1"
      },
      {
        "idType": "LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID",
        "idValue": "df5gf5-gh6t7-ph4j7h-fgf6n1"
      },
      {
        "idType": "PLAINTEXT_IP_ADDRESS",
        "idValue": "103.20.92.12"
      },
      {
        "idType": "GOOGLE_AID",
        "idValue": "AEBE52E7-03EE-455A-B3C4-E57283966239"
      }
    ],
    "userInfo": {
      "firstName": "mike",
      "lastName": "smith",
      "title": "software engineer",
      "companyName": "microsoft",
      "countryCode": "US"
    },
    "lead": "urn:li:leadGenFormResponse:8f7356abcd9-8d5c-49ca-931b-513123abc9-4",
    "externalIds": ["abc-external-123"]
  },
  "eventId": "abc12345"
}
```

#### Sample Response

A successful response returns a `201 Created` HTTP status code.

A failed response returns a `400 Bad Request` status code. To prevent failures, ensure that your request meets all the validation requirements.

### Adding Multiple Conversion Events in a Batch

To stream multiple conversions in a batch, include the `X-RestLi-Method` header set to `BATCH_CREATE`. You can send up to `5,000` conversion events in a single batch request. If you encounter issues, try using a smaller batch size. This method helps avoid rate limit throttling when sending large numbers of conversion events.

#### Sample Request

-   [http](#tabpanel_6_http)
-   [curl](#tabpanel_6_curl)

```
POST https://api.linkedin.com/rest/conversionEvents
'X-RestLi-Method': 'BATCH_CREATE' 
```

```
{
	"elements":
	[
		{
		      "conversion": "urn:lla:llaPartnerConversion:123",
		      "conversionHappenedAt": 1590739275000,
		      "conversionValue": {
				"currencyCode": "USD",
				"amount": "50.0"
		       },
		       "user": {
				"userIds": [ {
				       "idType": "SHA256_EMAIL",
				       "idValue": "bad8677b6c86f5d308ee82786c183482a5995f066694246c58c4df37b0cc41f1"
				       }
			   	],
				"userInfo": {
					"firstName": "mike",
					"lastName": "smith",
					"title": "software engineer",
					"companyName": "microsoft",
					"countryCode": "US"
         			}
     			},
			"eventId" : "abc234"
		}, {
		      "conversion": "urn:lla:llaPartnerConversion:123",
		      "conversionHappenedAt": 162723579000,
		      "conversionValue": {
				"currencyCode": "USD",
				"amount": "100.0"
		       },
		       "user": {
				"userIds": [ {
						"idType": "SHA256_EMAIL",
						"idValue": "dsfgrtg56u767ujy982fgnbmcsdocl46c58c56b650cik230bb9"
				       	}, {
						"idType": "LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID",
						"idValue": "ufh8h5-gh6t7-ph4j7h-mkl86n1"
               			}, {
		               "idType": "PLAINTEXT_IP_ADDRESS",
		               "idValue": "103.20.92.12"
		               	}, {
		               "idType": "GOOGLE_AID",
		               "idValue": "AEBE52E7-03EE-455A-B3C4-E57283966239"
		               	} ],
				"userInfo": {
					"firstName": "jason",
					"lastName": "bourne",
					"title": "tech lead",
					"companyName": "github",
					"countryCode": "US"
					}
				},
			"eventId" : "abc345"
			}
	]
}
```

#### Sample Response

A successful response returns a `201 Created` HTTP status code.

400 Bad Request is returned if the request is incorrect. The error message contains a reference to `batchIndex`, with the index of the array element in the request payload that caused the error. If there's any invalid value in the request body like missing required field or invalid data type, all records fail and you’ll need to resubmit the entire payload after correcting the data as indicated in the response body message.

Note

-   Send a maximum of `600` requests per minute from your member access token and a maximum of `500,000` requests per day from your member access token, otherwise your requests can get throttled due to rate limits.
-   Use batch requests for sending up to `5,000` conversion events in a single batch request to avoid getting throttled from rate limits.
-   Send multiple user identifiers if available, to increase match rates. This is important, as only matched events can be used for attribution and optimization.

## API Error Details

HTTP Status Code

ERROR MESSAGE

DESCRIPTION

400

BAD\_REQUEST

Request has a syntax error or validation error. Please check the error message to understand what part of request failed and resubmit with valid data.

401

EMPTY\_ACCESS\_TOKEN

Empty oauth2 access token.

403

USER\_NOT\_AUTHORIZED

User should have access to the ad account provided in the request and/or the required permissions.

400

Validation failed because \[{field=Invalid Conversion time, batchIndex=0, type=INVALID\_CONVERSION\_TIME\_FIELD\_VALUE, message=Conversion time should be within 90 days.}\]

Please make sure conversion timestamp in milliseconds is from the past 90 days.

400

Validation failed because \[{field=Multiple fields issue, batchIndex=0, type=INVALID\_USER\_IDENTIFICATION\_FIELD\_VALUE, message=The request must contain one of these fields: SHA256\_EMAIL or LINKEDIN\_FIRST\_PARTY\_ADS\_TRACKING\_UUID or ACXIOM\_ID or PLAINTEXT\_IP\_ADDRESS or GOOGLE\_AID or (firstName and lastName) or externalIds or lead, and the input shouldn't be empty string}\]

The required field is missing.

400

Invalid Conversion information provided, this event(s) is associated to a conversion that's marked as deleted. Conversion enabled should be true

Please make sure the conversion rule enabled is set as true; otherwise conversion events can't be streamed to a deleted conversion rule.

400

365 is not an available post-click window selection. Available: \[1, 7, 28, 30, 90\]

365 days is a supported value for these conversion types:

-   SUBMIT\_APPLICATION
-   PURCHASE
-   ADD\_TO\_CART
-   QUALIFIED\_LEAD
-   LEAD

422

ERROR :: /conversionHappenedAt :: field is required but not found and has no default value

The required `conversionHappenedAt` field is missing.

422

ERROR :: /user/userIds :: field is required but not found and has no default value

The required `userIds` field must be present. If identifying the user via `lead`, `externalIds`, or `userInfo`, include `userIds` as an empty list (`[]`).

422

ERROR :: /user/lead :: Invalid Urn format. Invalid prefix.

When passing any value to `lead` field, it must be in a valid URN format e.g. "urn:li:leadGenFormResponse:123e4adfv9-8d5c-49ca-931b-fdgfgr123-4"