New Orders API

New Orders API

The New Orders API is CJ's GraphQL Tracking API for submitting affiliate conversion data directly from your server. Use the createOrders mutation to send new orders, attribute them to the correct publisher, and unlock advanced capabilities like Situational Commissioning and enhanced Insights reporting.

This API is part of CJ's full transaction lifecycle suite, which also includes restateOrdersfor modifications and cancelOrderfor cancellations.

Why Use the New Orders API?

Server-Authoritative Conversions
Submit orders directly from your backend at the moment of truth — no reliance on the browser, tags, or client-side execution that can be blocked, delayed, or lost.
Concurrent Tracking Ready
Run the New Orders API alongside Universal Tag or S2S without double-counting. CJ deduplicates on orderId so you can migrate incrementally and validate parity before cutover.
Full Order Lifecycle in One API
Handle creates, restatements, and cancellations through a single GraphQL endpoint — restateOrders for adjustments, cancelOrders for returns, all tied to the original cjevent.
Resilient to Browser Restrictions
Bypass ad blockers, ITP, and third-party cookie deprecation entirely. Because conversions are submitted server-to-server, attribution survives regardless of the shopper's browser/device.

API Endpoints

CJ's Tracking API has two endpoints — one for testing during development and one for production. Always validate in Test Mode before sending live data.

Test mode

Use during development to validate requests without impacting production data or reporting.

POSTtracking.api.cj.com/graphqltest
Requests are validated the same as production but are not posted to reporting. Order lock and closure status is not checked — something may pass in Test Mode but fail in production.
Live mode

Use once data has been tested and validated. All valid requests are processed and posted to production reporting.

POSTtracking.api.cj.com/graphql
All requests run through order processing in production. Valid requests are posted to production reporting and impact your affiliate program data.

Getting started with the CJ API

Follow the steps below to authenticate and start making API requests. You will need a Personal Access Token before you can access any CJ API endpoints.

01
Create a Personal Access Token

Log in with your CJ credentials and generate a token from the Personal Access Tokens page. If you don't know your login credentials, submit a support ticket.

02
Authenticate your requests

All API requests must include an Authorization header using the Bearer token type followed by your Personal Access Token.

HTTP
Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9
Keep your token secure and private. Never expose it in client-side code or public repositories.
03
Start making API requests

Using your token, you can access the full range of CJ API features.

New OrdersRestatementsCancellationsProduct Feed

Open-Ended Locking

For Travel advertisers using CJ's Open-Ended Locking solution, orders submitted through the New Orders API enter a pended state and remain there until the reservation is resolved. When the customer completes their stay, trip, or booking period, submit a restateOrders request to transition the order from pended to accepted, making the commission eligible for publisher payout. Conversely, if the customer cancels before or during the booking period, submit a cancelOrders request to transition the order from pended to declined, preventing commission payout and removing the booking from the advertiser's eventual invoice.

Open Ended Lifecycle

For travel and extended booking programs — track reservations that confirm over weeks or months

Full documentation →

CJ affiliate link
is clicked

via publisher

Customer makes
a reservation

hotel, flight, tour…

Data sent to CJ

status = pended
customer action determines outcome

Reservation Completed

Trigger

Customer completes their stay, trip, or booking period

Action
Send an update withstatus = Accepted
Result
Commission is paid out to publisher

Reservation Cancelled

Trigger

Customer cancels before or during the booking period

Action
Send an update withstatus = Declined
Result
No commission paid — order is declined


What’s Next