openapi: 3.1.0 info: title: CJ Affiliate Publisher Tracking API version: '2026-08-13' description: 'CJ Affiliate''s published REST APIs, transcribed from CJ''s own developer documentation. Two families are covered: 1. The classic XML lookup / search APIs on `*.api.cj.com` — Link Search, Advertiser Lookup, Publisher Lookup and the deprecated Commission Detail (Legacy). Each is documented with a stated call limit of 25 calls per minute and returns an `application/xml` `` document. 2. The JSON click-tracking APIs — the Click Events API (`clicks.api.cj.com`) for partners and the Publisher Tracking API (`publishertracking.api.cj.com`) for publishers. Both accept a JSON body and return `{ destinationUrl, errorMessages }`. PROVENANCE: every path, parameter name, response field, status code and error message below was read on 2026-08-13 from CJ''s machine-readable documentation corpus, which the CJ Developer Portal single-page app loads from https://production-docs-assets.p.cjpowered.com/ (index at /index.yaml, one markdown file per page). Nothing here is modeled. CJ''s modern surface is GraphQL — see graphql/ in this repo for the three live schemas captured by introspection.' contact: name: API Evangelist email: kin@apievangelist.com url: https://developers.cj.com/ x-source: - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Overview.md - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Link%20Search.md - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Advertiser%20Lookup.md - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Publisher%20Lookup.md - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Commission%20Detail%20(Legacy).md - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Automated%20Offer%20Feed.md - https://production-docs-assets.p.cjpowered.com/Publisher%20Site%20Tracking/Click%20Events%20API.md - https://production-docs-assets.p.cjpowered.com/Publisher%20Site%20Tracking/Publisher%20Tracking%20API.md servers: - url: https://publishertracking.api.cj.com description: Publisher Tracking API security: - personalAccessToken: [] tags: - name: Publisher Tracking description: Publisher server-side click registration (bounceless tracking). paths: /clickdestination: post: tags: - Publisher Tracking operationId: resolveClickDestination summary: Resolve a publisher click into a bounceless destination URL description: Server-to-server click registration for publishers. Returns either a destination URL directly to the advertiser (when a bounceless journey is appropriate) or the original tracking link that was passed in. On any error the publisher must navigate the consumer to the traditional Click URL. Cannot be called from a browser — the browser-based equivalent is CJ's Publisher Tag. servers: - url: https://publishertracking.api.cj.com requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PublisherTrackingRequest' responses: '200': description: Destination URL resolved. content: application/json: schema: $ref: '#/components/schemas/ClickDestinationResponse' '400': description: 'Schema or field-level validation error. Documented messages: "Please specify valid JSON", "Please include required field: XXxXX", "Extra Unknown Field Detected: XXxXX", "XXxXX included consumer Personally Identifiable Information".' content: application/json: schema: $ref: '#/components/schemas/ClickDestinationResponse' '401': description: '"The provided bearer token is invalid or has expired", or "Authorization failed" — this API returns 401 for both authentication and authorization failures.' content: application/json: schema: $ref: '#/components/schemas/ClickDestinationResponse' '500': description: Internal Server Error. Contact CJ Support for assistance. content: application/json: schema: $ref: '#/components/schemas/ClickDestinationResponse' components: securitySchemes: personalAccessToken: type: http scheme: bearer description: 'A CJ Personal Access Token created at https://developers.cj.com/account/personal-access-tokens, sent as `Authorization: Bearer `. CJ''s REST APIs also accept a legacy Developer Key in the same Authorization header.' schemas: ClickDestinationResponse: type: object description: The shared response envelope for both click APIs. `destinationUrl` is an empty string when an error occurred. properties: destinationUrl: type: string errorMessages: type: array items: type: string statusCode: type: integer description: Documented in the response table as a returned field. PublisherTrackingRequest: type: object required: - publisherCompanyId - promotionalPropertyId - clickUrl properties: publisherCompanyId: type: string description: CJ Account Number (CID). promotionalPropertyId: type: string description: Your Promotional Property ID (PID). Must match the PID in your CJ tracking URL. clickUrl: type: string description: The tracking link you would normally navigate the consumer to, in current standard CJ tracking link format. userIdentifier: type: string description: A persistent first-party non-PII user id. userAgent: type: string userIpAddress: type: string description: Consumer IP address. Used by CJ to determine compliance requirements. referringUrl: type: string description: Full URL of the page that navigated the consumer to the advertiser.