CreatorIQ Ecommerce APIs
Manage promo codes, promo-code integrations, connected ecommerce accounts and read ecommerce transactions attributed to creators.
Manage promo codes, promo-code integrations, connected ecommerce accounts and read ecommerce transactions attributed to creators.
openapi: 3.1.0
info:
version: 1.0.0
title: CreatorIQ Ecommerce APIs
description: CreatorIQ CRM APIs for Ecommerce resource
termsOfService: 'https://www.creatoriq.com/legal/terms-of-use'
contact:
name: CreatorIQ
url: 'https://www.creatoriq.com'
email: support@creatoriq.com
license:
url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
name: Apache 2.0
servers:
- url: 'https://apis.creatoriq.com'
description: Live
paths:
'/crm/v1/api/ecommerce/promo-codes/{id}':
patch:
tags:
- Ecommerce
summary: Update publisher promo code
description: Update existing publisher promo code by ID. Unique identifier is PromoCodePublisherId which is unique ID of relation between PromoCodeId and PublisherId.
operationId: patchEcommercePromo-codesId
parameters:
- name: id
in: path
description: Value of the PromoCodePublisherId
required: true
schema:
type: integer
examples:
- 456
examples:
default:
value: 456
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchPromoCodeBody'
responses:
'200':
description: Response 200
content:
application/json:
schema:
$ref: '#/components/schemas/PromoCodeModel'
'400':
description: Response 400 (Bad Request)
'404':
description: Response 404 (Not found)
content:
application/json:
schema:
$ref: '#/components/schemas/PromoCodeNotFoundResponse'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
/crm/v1/api/ecommerce/promo-codes/integrations:
get:
tags:
- Ecommerce
summary: Get integrations to add promo-code(s)
description: 'Get active integrations list with at least 1 connected account. Note: in case of no connected accounts linked the list will be empty.'
operationId: getEcommercePromo-codesIntegrations
responses:
'200':
description: Response 200
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationsResponse'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
/crm/v1/api/ecommerce/integrations/accounts:
get:
tags:
- Ecommerce
summary: Get connected accounts list
description: Get the list of all the connected accounts for AWIN and CJ integrations.
operationId: getEcommerceIntegrationsAccounts
responses:
'200':
description: Response 200
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectedPromoCodeAccountsResponse'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
'/crm/v1/api/ecommerce/promo-codes/{promoCodePublisherId}/publisher/{publisherId}':
delete:
tags:
- Ecommerce
summary: Delete publisher promo-code
description: Delete promo code by PromoCodePublisherId and PublisherId. After adding promo-code with the same name the promo-codes entity ID i.e. PromoCodeId will not be changed. In case of successful deleting the promo-code empty body with 204 status code will be returned. Promo-code which already has commissions can not be deleted.
operationId: deleteEcommercePromo-codesPromoCodePublisherIdPublisherPublisherId
parameters:
- name: promoCodePublisherId
in: path
description: Value of the PromoCodePublisherId
required: true
schema:
type: integer
examples:
- 456
examples:
default:
value: 456
- name: publisherId
in: path
description: Value of the CreatorIQ PublisherId
required: true
schema:
type: integer
examples:
- 123456
examples:
default:
value: 123456
responses:
'204':
description: Promo-code deleted successful response.
'400':
description: Error with deleting promo-code. For example it happens when the promo-code already has commissions.
content:
application/json:
schema:
$ref: '#/components/schemas/DeletePromoCodesResponse400'
'404':
description: PromoCodePublisherId or PublisherId not found.
content:
application/json:
schema:
$ref: '#/components/schemas/PromoCodeNotFoundResponse'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
/crm/v1/api/ecommerce/promo-codes:
post:
tags:
- Ecommerce
summary: Create new promo-codes
description: 'Create promo-codes, 10 items max allowed in 1 request. Different integrations and(or) publishers can be used in 1 request. Also if the integration is CJ and CreatorIQ publisher does not have CJ Promotional Property generated yet than the CJPID(CJ Promotional Property) will be generated using CJ API.'
operationId: postEcommercePromo-codes
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PostPromoCodesBody'
responses:
'200':
description: Response 200
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePromoCodesResponse200'
'400':
description: Response 400
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePromoCodesResponse400'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
get:
tags:
- Ecommerce
summary: Get promo-codes list
description: Get list of all the promo-codes for all publishers in the network with pagination.
operationId: getEcommercePromo-codes
parameters:
- name: Page
in: query
description: 1 by default if no parameter provided.
required: false
schema:
type: integer
examples:
- 2
examples:
default:
value: 2
- name: PageSize
in: query
description: 20 by default if no parameter provided.
required: false
schema:
type: integer
examples:
- 100
examples:
default:
value: 100
responses:
'200':
description: Response 200
content:
application/json:
schema:
$ref: '#/components/schemas/GetPromoCodesResponse'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
/crm/v1/api/ecommerce/transactions:
get:
tags:
- Ecommerce
summary: Get transactions
description: Get network transactions of the all publishers. Every transaction ID is unique with latest status.
operationId: getEcommerceTransactions
parameters:
- name: Page
in: query
description: 1 by default if no parameter provided.
required: false
schema:
type: integer
examples:
- 2
examples:
default:
value: 2
- name: PageSize
in: query
description: 20 by default if no parameter provided.
required: false
schema:
type: integer
examples:
- 100
examples:
default:
value: 100
- name: DateType
in: query
description: '"TransactionDate" by default if no parameter provided.'
required: false
schema:
type: string
enum:
- TransactionDate
- LastUpdate
examples:
- LastUpdate
examples:
default:
value: LastUpdate
- name: DateFrom
in: query
description: 'Two different formats accepted: "2024-02-16" or "2024-02-16 21:30:25".'
required: false
schema:
type: string
examples:
- '2024-02-16'
examples:
default:
value: '2024-02-16'
- name: DateTo
in: query
description: 'Two different formats accepted: "2024-02-16" or "2024-02-16 21:30:25".'
required: false
schema:
type: string
examples:
- '2024-02-16'
examples:
default:
value: '2024-02-16'
- name: Status
in: query
description: Transaction status.
required: false
schema:
type: string
examples:
- approved
examples:
default:
value: approved
- name: TransactionId
in: query
description: Transaction ID.
required: false
schema:
type: string
examples:
- asd8E05QYA31XmxF
examples:
default:
value: asd8E05QYA31XmxF
- name: CampaignId
in: query
description: Campaign ID in the CreatorIQ platform.
required: false
schema:
type: integer
examples:
- 12345
examples:
default:
value: 12345
- name: PublisherId
in: query
description: Publisher ID in the CreatorIQ platform.
required: false
schema:
type: integer
examples:
- 12345
examples:
default:
value: 12345
- name: OrderId
in: query
description: Id of the order.
required: false
schema:
type: string
examples:
- '1234265934'
examples:
default:
value: '1234265934'
responses:
'200':
description: Response 200
content:
application/json:
schema:
$ref: '#/components/schemas/GetTransactionsResponse200'
'400':
description: Response 400 (Bad Request)
content:
application/json:
schema:
$ref: '#/components/schemas/CoreExceptionResponse400'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
/crm/v1/api/ecommerce/transactions/history:
get:
tags:
- Ecommerce
summary: Get transactions history
description: 'Get network transactions list of the all publishers. Returns all the transactions history, Transaction ID is not unique.'
operationId: getEcommerceTransactionsHistory
parameters:
- name: Page
in: query
description: 1 by default if no parameter provided.
required: false
schema:
type: integer
examples:
- 2
examples:
default:
value: 2
- name: PageSize
in: query
description: 20 by default if no parameter provided.
required: false
schema:
type: integer
examples:
- 100
examples:
default:
value: 100
- name: DateType
in: query
description: '"TransactionDate" by default if no parameter provided.'
required: false
schema:
type: string
enum:
- TransactionDate
- LastUpdate
examples:
- LastUpdate
examples:
default:
value: LastUpdate
- name: DateFrom
in: query
description: 'Two different formats accepted: "2024-02-16" or "2024-02-16 21:30:25".'
required: false
schema:
type: string
examples:
- '2024-02-16'
examples:
default:
value: '2024-02-16'
- name: DateTo
in: query
description: 'Two different formats accepted: "2024-02-16" or "2024-02-16 21:30:25".'
required: false
schema:
type: string
examples:
- '2024-02-16'
examples:
default:
value: '2024-02-16'
- name: Status
in: query
description: Status of the transaction.
required: false
schema:
type: string
examples:
- approved
examples:
default:
value: approved
- name: TransactionId
in: query
description: ID of the transaction.
required: false
schema:
type: string
examples:
- asd8E05QYA31XmxF
examples:
default:
value: asd8E05QYA31XmxF
- name: CampaignId
in: query
description: Campaign ID in the CreatorIQ platform.
required: false
schema:
type: integer
examples:
- 12345
examples:
default:
value: 12345
- name: PublisherId
in: query
description: Publisher ID in the CreatorIQ platform.
required: false
schema:
type: integer
examples:
- 12345
examples:
default:
value: 12345
- name: OrderId
in: query
description: Id of the order.
required: false
schema:
type: string
examples:
- '1234265934'
examples:
default:
value: '1234265934'
responses:
'200':
description: Response 200
content:
application/json:
schema:
$ref: '#/components/schemas/GetTransactionsResponse200'
'400':
description: Response 400 (Bad Request)
content:
application/json:
schema:
$ref: '#/components/schemas/CoreExceptionResponse400'
security:
- apiKey: []
servers:
- url: 'https://apis.creatoriq.com'
description: Live
tags:
- name: Ecommerce
description: Ecommerce public API
components:
securitySchemes:
apiKey:
type: apiKey
name: x-api-key
in: header
schemas:
PatchPromoCodeBody:
type: object
properties:
Instruction:
type: string
description: Description to the CreatorIQ publisher how to use the promo-code.
examples:
- promo-code instruction
Percentage:
type: number
description: Percent of the discount. If we want to have discount 5.5% the value should be as is 5.5.
examples:
- 10.25
StartDate:
type: string
description: Date from when the promo-code is active and the code can be applied.
examples:
- '2023-10-10 00:00:00'
EndDate:
type: string
description: Date when the promo-code expires and it will not be applicable any more.
examples:
- '2023-10-10 23:59:59'
PromoCodeModel:
type: object
properties:
PromoCodeId:
type: integer
description: ID of the promo-code entity.
examples:
- 123
PromoCodePublisherId:
type: integer
description: ID of the promo-code related to a specific publisher.
examples:
- 456
PromoCodeName:
type: string
description: Name of the promo-code to apply in the external services.
examples:
- PROMO_CODE
StartDate:
type: string
description: Date from when the promo-code is active and the code can be applied.
examples:
- '2023-10-10 23:59:59'
EndDate:
type:
- string
- 'null'
description: Date when the promo-code expires and it will not be applicable any more.
examples:
- '2023-10-20 23:59:59'
Percentage:
type:
- number
- 'null'
description: Percent of the discount. If we want to have discount 5.5% the value should be as is 5.5.
format: float
examples:
- 10.25
IntegrationName:
type: string
description: Name of the integration to which promo-code relates to.
examples:
- CJ
PromotionalPropertyId:
type:
- integer
- 'null'
description: ID of the Promotional Property entity in the external integration.
examples:
- 101001234
Instruction:
type:
- string
- 'null'
description: Description to the CreatorIQ publisher how to use the promo-code.
examples:
- Instruction example for the publisher.
required:
- PromoCodeId
- PromoCodePublisherId
- PromoCodeName
- StartDate
- EndDate
- Percentage
- IntegrationName
- PromotionalPropertyId
- Instruction
PromoCodeNotFoundResponse:
type: object
properties:
type:
type: string
examples:
- CoreException
CoreException:
type: object
properties:
code:
type: integer
examples:
- 404
message:
type: string
examples:
- Promo code not found
required:
- code
- message
required:
- type
- CoreException
IntegrationsResponse:
type: array
items:
type: object
properties:
Id:
type: integer
description: ID of the integration.
examples:
- 13
Name:
type: string
description: 'Integration slug, should be used in the API requests.'
examples:
- impactSubAffiliate
DisplayName:
type: string
description: This is how this integration will be named on the UI in the CreatorIQ application.
examples:
- Impact Sub-affiliate
required:
- Id
- Name
- DisplayName
ConnectedPromoCodeAccountsResponse:
type: object
properties:
Code:
type: integer
description: 'Status code. Available statuses: 200, 400.'
examples:
- 200
Message:
type: string
description: User friendly message about status of the request.
examples:
- Connected Accounts list
Status:
type: string
description: 'Status slug. Available statuses: OK.'
examples:
- OK
Items:
type: object
properties:
IntegrationName:
type: string
description: Name of the integration.
examples:
- CJ
AccountConfigurationId:
type: integer
description: ID of the account configuration in the CreatorIQ platform.
examples:
- 13
AccountDisplayName:
type: string
description: Name of the account.
examples:
- Test Account
required:
- IntegrationName
- AccountConfigurationId
- AccountDisplayName
required:
- Code
- Message
- Status
- Items
DeletePromoCodesResponse400:
type: object
properties:
type:
type: string
examples:
- CoreException
CoreException:
type: object
properties:
code:
type: integer
examples:
- 400
message:
type: string
examples:
- Promo code already has transactions and it can't be deleted.
required:
- code
- message
required:
- type
- CoreException
PostPromoCodesBody:
type: object
properties:
Codes:
type: array
minItems: 1
maxItems: 10
items:
type: object
properties:
Integration:
type: string
description: Slug of the active integration.
examples:
- cj
AccountConfigurationId:
type: integer
description: ID of the account configuration in the CreatorIQ platform.
examples:
- 123456
Code:
type: string
description: Name of the promo-code to apply in the external services.
examples:
- PROMO_CODE
Percentage:
type: number
description: Percent of the discount. If we want to have discount 5.5% the value should be as is 5.5.
examples:
- 10.25
StartDate:
type: string
description: Date from when the promo-code is active and the code can be applied.
examples:
- '2023-10-10 00:00:00'
EndDate:
type: string
description: Date when the promo-code expires and it will not be applicable any more.
examples:
- '2023-11-10 23:59:59'
Instruction:
type:
- string
- 'null'
description: Description to the CreatorIQ publisher how to use the promo-code.
examples:
- promo-code instruction for the specific publisher.
PublisherId:
type: integer
description: PublisherId in the CreatorIQ platform.
examples:
- 123456
required:
- Integration
- AccountConfigurationId
- Code
- Percentage
- StartDate
- PublisherId
required:
- Codes
CreatePromoCodesResponse200:
type: object
properties:
Code:
type: integer
description: 'Status code of creating all the promo-codes. Available statuses: 200, 400.'
examples:
- 200
Message:
type: string
description: User friendly message about status of the request.
examples:
- Promo codes created
Status:
type: string
description: 'Status slug regarding creating the promo-code. Available statuses: CREATED or INVALID_ARGUMENT.'
examples:
- CREATED
Codes:
type: object
properties:
Items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/PromoCodeModel'
required:
- Code
- Message
- Status
- Codes
CreatePromoCodesResponse400:
type: object
properties:
Code:
type: integer
examples:
- 400
Message:
type: string
examples:
- Some of items are invalid
Status:
type: string
examples:
- INVALID_ARGUMENT
Codes:
type: object
properties:
Errors:
type: array
minItems: 1
items:
type: object
properties:
Item:
type: object
properties:
Integration:
type: string
examples:
- cj
Code:
type: string
examples:
- PROMO_CODE
Percentage:
type:
- number
- 'null'
format: float
examples:
- 10.25
StartDate:
type: string
examples:
- '2023-10-10 23:59:59'
EndDate:
type:
- string
- 'null'
examples:
- '2023-10-20 23:59:59'
Instruction:
type:
- string
- 'null'
examples:
- Text instructions for publisher.
PublisherId:
type: integer
examples:
- 9876543
required:
- Integration
- Code
- Percentage
- StartDate
- EndDate
- Instruction
- PublisherId
Errors:
type: array
minItems: 1
items:
$ref: '#/components/schemas/PromoCodeErrorModel'
required:
- Errors
required:
- Code
- Message
- Status
- Codes
PromoCodeErrorModel:
type: object
properties:
Type:
type: string
description: 'Slug name of the error. Available values: ValidationError, DataError, CJAPIError. CJAPIError happens when the CJ API returns unexpected response, for example 500 or 502 status code.'
examples:
- ValidationError
Code:
type: integer
description: 'Error code, for now always 0.'
examples:
- 0
Field:
type: string
description: Field name where error happened. For example in case of invalid format of the StartDate provided the value will be StartDate.
examples:
- Code
Path:
type: string
description: Path to the item where error happened. For example for the 3th item with error in StartDate the value will be Codes.2.StartDate
examples:
- Codes.0.Code
Reason:
type: string
description: Human readable error why and where error happened
examples:
- CJ Promo-code PROMO_CODE already exists for this configuration.
required:
- Type
- Code
- Field
- Path
- Reason
GetPromoCodesResponse:
type: object
properties:
count:
type: integer
description: Count of all the items.
examples:
- 527
page:
type: integer
description: Page number.
examples:
- 1
size:
type: integer
description: Page size.
examples:
- 20
Code:
type: integer
description: 'Status code of creating all the promo-codes. Available statuses: 200, 400.'
examples:
- 200
Message:
type: string
description: User friendly message about status of the request.
examples:
- Promo codes list
Status:
type: string
description: 'Status slug regarding creating the promo-code. Available statuses: CREATED or INVALID_ARGUMENT.'
examples:
- OK
Items:
type: array
items:
$ref: '#/components/schemas/PromoCodeListItem'
required:
- count
- page
- size
- Code
- Message
- Status
- Items
PromoCodeListItem:
type: object
properties:
PromoCodePublisherId:
type: integer
description: ID of the promo-code in the CreatorIQ platform.
examples:
- 456
PublisherId:
type: integer
description: ID of the publisher in the CreatorIQ platform.
examples:
- 123
PromoCodeName:
type: string
description: Name of the promo-code.
examples:
- PROMO_CODE
IntegrationName:
type: string
description: Name of the integration to which promo-code relates to.
examples:
- CJ
PublisherName:
type: string
description: Name of the publisher in the CreatorIQ platform.
examples:
- Test
required:
- PromoCodePublisherId
- PublisherId
- PromoCodeName
- IntegrationName
- PublisherName
GetTransactionsResponse200:
type: object
properties:
count:
type: integer
description: Count of all the items.
examples:
- 527
page:
type: integer
description: Page number.
examples:
- 1
size:
type: integer
description: Page size.
examples:
- 20
data:
type: array
items:
$ref: '#/components/schemas/TransactionModel'
required:
- count
- page
- size
- data
TransactionModel:
type: object
properties:
CiqTransactionId:
type: string
description: ID of the transaction.
examples:
- c36ce8feXYqlk81
NetworkTransactionId:
type: string
description: ID of the network transaction.
examples:
- '1234544145'
NetworkName:
type: string
description: Name of the network.
examples:
- Rakuten Advertising
NetworkAdvertiserId:
type: string
description: Network advertiser ID.
examples:
- Asdob36a
AdvertiserName:
type: string
description: Advertiser name.
examples:
- Test advertiser
OrderId:
type: string
description: Id of the order.
examples:
- '1234499551'
OrderCountry:
type: string
description: Country of the customer who made the order.
examples:
- TH
TransactionDate:
type: string
description: Date of the transaction.
examples:
- '2024-02-05 11:24:13'
DeviceType:
type:
- string
- 'null'
description: Type of the device.
examples:
- Smartphone
OsType:
type:
- string
- 'null'
description: Operating system name.
examples:
- iOS
NetworkChannelId:
type:
- string
- 'null'
description: Network channel ID.
examples:
- Q5f1nY51
ChannelName:
type:
- string
- 'null'
description: Name of the channel.
examples:
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/creatoriq/refs/heads/main/openapi/creatoriq-ecommerce-openapi.yml