Introduction
Base URL:
https://api.terminusapp.com/
Terminus's RESTful API allows you to perform various operations on your Terminus account.
All responses (including errors) are returned with standard HTTP response codes and JSON-formatted data.
Authentication
Authenticated Request :
curl "https://api.terminusapp.com/v1/projects" \
-u YOUR_API_KEY:
# The colon prevents curl from asking for a password.
The Terminus API uses API keys to authenticate requests. You can create and manage your API keys in your Terminus account.
Authentication to the API is performed via HTTP Basic Auth. Provide your API key as the basic auth username value. You do not need to provide a password.
If you need to authenticate via bearer auth, use -H "Authorization: Bearer YOUR_API_KEY" instead of -u YOUR_API_KEY.
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
Object IDs
Object data responses will include JSON keys such as id
, project_id
and others. Before storing or using these IDs, consider the following:
- String IDs that start with a prefix, say
prj_
, are permanent and will not change. If needed, you can store these IDs locally for later use. - Any integer based IDs (e.g. "field_id": 478) may change in the future. These should not be stored locally, and used only for temporary lookup.
Campaigns
List Campaign Values
Get UTM Campaign values
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_6xF8C4dLtN/campaigns" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/campaigns
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"value": "blog-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "blog-2",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-2",
"fields_map": [
],
"parameter_format_id": null
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
value | Campaign tag |
fields_map | Fields Data saved for the this Campaign Value |
parameter_format_id | Parameter Format ID used to save the Campaign Value |
Contents
List Content Values
Get UTM Content values
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_fQoI9KzLRz/contents" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/contents
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"value": "blog-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "blog-2",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-2",
"fields_map": [
],
"parameter_format_id": null
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
value | Content tag |
fields_map | Fields Data saved for the this Content Value |
parameter_format_id | Parameter Format ID used to save the Content Value |
Conventions
List conventions
Get a list of conventions. This returns minimal information for each convention.
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_fSLC0OxFko/conventions" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/conventions
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
Response
{
"data": [
{
"id": 89,
"name": "Main Convention"
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
data | An array of items |
meta[page] | Current page number |
meta[has_more] | true if more items are available on the next page. Otherwise false |
Get a convention
Get detailed information about a particular convention
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_xlZL9Y5II4/conventions/90" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/conventions/:convention_id
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
convention_id required | Convention id |
Response
{
"id": 90,
"name": "Main Convention",
"description": null,
"shared": false,
"field_mode": false,
"campaign_format_id": 589,
"medium_format_id": 590,
"source_format_id": 591,
"content_format_id": 592,
"term_format_id": 593,
"disable_campaign": false,
"disable_medium": false,
"disable_source": false,
"disable_content": false,
"disable_term": false,
"custom_formats": [
{
"custom_parameter_id": 832,
"parameter_format_id": 594,
"disable": false
}
],
"info_field_formats": [
{
"info_field_id": 716,
"parameter_format_id": 595,
"disable": false
}
],
"fields": [
{
"id": 1079,
"name": "Interval",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": ":int",
"option_values": [
{
"name": "weekly",
"description": "Weekly newsletter",
"position": 1
},
{
"name": "monthly",
"description": "Monthly newsletter",
"position": 2
},
{
"name": "yearly",
"description": "",
"position": 3
}
]
},
{
"id": 1080,
"name": "Campaign Date",
"description": null,
"required": true,
"type": "DateField",
"date_format": "YYYY_MM_DD",
"constant_value": null,
"prefix": "date_",
"suffix": null,
"option_values": [
]
},
{
"id": 1081,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
},
{
"id": 1082,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
},
{
"id": 1083,
"name": "Email",
"description": null,
"required": true,
"type": "ConstantField",
"date_format": null,
"constant_value": "email",
"prefix": null,
"suffix": null,
"option_values": [
]
},
{
"id": 1084,
"name": "Email Source",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
{
"name": "newsletter1",
"description": null,
"position": 1
},
{
"name": "newsletter2",
"description": null,
"position": 2
}
]
},
{
"id": 1085,
"name": "Email Content",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
{
"name": "content1",
"description": null,
"position": 1
},
{
"name": "content2",
"description": null,
"position": 2
}
]
},
{
"id": 1086,
"name": "Email Term",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
{
"name": "term1",
"description": null,
"position": 1
},
{
"name": "term2",
"description": null,
"position": 2
}
]
},
{
"id": 1087,
"name": "Product",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": ":int",
"option_values": [
{
"name": "shoes",
"description": null,
"position": 1
},
{
"name": "shirts",
"description": null,
"position": 2
},
{
"name": "socks",
"description": null,
"position": 3
}
]
},
{
"id": 1088,
"name": "Custom Date",
"description": null,
"required": true,
"type": "DateField",
"date_format": "YYYY_MM_DD",
"constant_value": null,
"prefix": "date_",
"suffix": null,
"option_values": [
]
},
{
"id": 1089,
"name": "Name",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
},
{
"id": 1090,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": ":h",
"option_values": [
]
},
{
"id": 1091,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": ":h",
"option_values": [
]
},
{
"id": 1092,
"name": "Goal",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
{
"name": "visit",
"description": "Website visit",
"position": 1
},
{
"name": "sale",
"description": "Sale",
"position": 2
},
{
"name": "lead",
"description": "",
"position": 3
}
]
},
{
"id": 1093,
"name": "Purpose",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
}
]
}
Name | Description |
---|---|
id | Convention id |
name | Given name of the convention |
description | Given description of the convention |
shared | true if shared with other projects |
field_mode | true if Field Mode is enabled |
campaign_format_id | Parameter Format ID for UTM Campaign |
medium_format_id | Parameter Format ID for UTM Medium |
source_format_id | Parameter Format ID for UTM Source |
content_format_id | Parameter Format ID for UTM Content |
term_format_id | Parameter Format ID for UTM Term |
disable_campaign | true if UTM Campaign is disabled |
disable_medium | true if UTM Medium is disabled |
disable_source | true if UTM Source is disabled |
disable_content | true if UTM Content is disabled |
disable_term | true if UTM Term is disabled |
custom_formats[custom_parameter_id] | Custom Parameter ID for the Format |
custom_formats[parameter_format_id] | Parameter Format ID for the custom parameter |
custom_formats[disable] | true if this custom parameter is disabled |
info_field_format[info_field_id] | Info Field ID for the Format |
info_field_format[parameter_format_id] | Parameter Format ID for the info field |
info_field_format[disable] | true if this info field is disabled |
fields | All fields in the convention |
Custom Parameter Values
List Custom Parameter Values
Get a list of Custom Parameter Values for a specific Custom Parameter
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_O8IxJmQCWv/custom_parameter_values?custom_parameter_id=833" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/custom_parameter_values
Parameters
custom_parameter_id: 833
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
custom_parameter_id required | Custom Parameter ID |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"value": "Festive10",
"active": false,
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "Festive20",
"active": true,
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "Festive30",
"active": false,
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "Festive40",
"active": true,
"fields_map": [
],
"parameter_format_id": null
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
value | Custom Parameter Value |
active | Whether the Custom Parameter Value is active |
fields_map | Fields Data saved for the this Custom Parameter Value |
parameter_format_id | Parameter Format ID used to save the Custom Parameter Value |
custom_parameter[name] | Name of the Custom Parameter |
Custom Parameters
List Custom Parameters
Get a list of Custom Parameters
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_m2esBYt7Im/custom_parameters" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/custom_parameters
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"id": 835,
"name": "coupon",
"active": true,
"description": null,
"required": false,
"expression": "",
"generated": false
},
{
"id": 836,
"name": "test parameter",
"active": true,
"description": null,
"required": false,
"expression": "",
"generated": false
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
id | Custom Parameter ID |
name | Custom Parameter Name |
active | Whether the Custom Parameter field is active |
description | Custom Parameter Description |
required | Whether the Custom Parameter is Required |
expression | Expression to generate the Custom Parameter |
generated | Whether the Custom Parameter is generated based on the expression set |
Info Field Values
List Info Field Values
Get a list of Info Field Values for a specific Info Field
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_VCDnOq5tis/info_field_values?info_field_id=717" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/info_field_values
Parameters
info_field_id: 717
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
info_field_id required | Info Field ID |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"value": "Jared",
"active": false,
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "Richard",
"active": true,
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "Monica",
"active": false,
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "Carol",
"active": true,
"fields_map": [
],
"parameter_format_id": null
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
name | Info Field Value |
active | Whether the Info Field Value is active |
fields_map | Fields Data saved for the this Info Field Value |
parameter_format_id | Parameter Format ID used to save the Info Field Value |
info_field[name] | Name of the Info Field |
Info Fields
List Info Fields
Get a list of Info Fields
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_uLuJL12DLh/info_fields" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/info_fields
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"id": 719,
"name": "Info Field 1",
"description": null,
"expression": "",
"required": false,
"generated": false
},
{
"id": 720,
"name": "Info Field 2",
"description": null,
"expression": "",
"required": false,
"generated": false
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
id | Info Field ID |
name | Info Field Name |
description | Info Field Description |
expression | Expression to generate the Info Field |
required | Whether the Info Field is Required |
generated | Whether the Info Field is generated based on the expression set |
Links
List links
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_0uWAHmB1Fo/links" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/links
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
created_at[gt] | Return items created after a certain date. The value should be an integer Unix timestamp. |
updated_at[gt] | Return items updated after a certain date. The value should be an integer Unix timestamp. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
Response
{
"data": [
{
"id": 3882,
"url": "https://www.example.com/",
"long_url": "https://www.example.com/?coupon=50p_off&cid=monthly-date_20200911-head_nowwork-ads&utm_source=linkedin&utm_medium=social&utm_campaign=monthly-date_20200911-head_nowwork-ads",
"description": "Blog links",
"campaign": {
"value": "monthly-date_20200911-head_nowwork-ads",
"fields_map": [
{
"prefix": null,
"suffix": null,
"field_id": 467,
"field_name": "Interval",
"final_value": "monthly",
"input_value": "monthly"
},
{
"prefix": "date_",
"suffix": "",
"field_id": 477,
"field_name": "Date",
"final_value": "date_20200911",
"input_value": "20200911"
},
{
"prefix": "head_",
"suffix": "",
"field_id": 479,
"field_name": "Name",
"final_value": "head_nowwork",
"input_value": "nowwork"
},
{
"prefix": null,
"suffix": null,
"field_id": 478,
"field_name": "Channel",
"final_value": "ads",
"input_value": "ads"
}
],
"parameter_format_id": 12345
},
"medium": {
"value": "social",
"fields_map": [
],
"parameter_format_id": null
},
"source": {
"value": "linkedin",
"fields_map": [
],
"parameter_format_id": null
},
"content": null,
"term": null,
"custom_parameter_values": [
{
"value": "50p_off",
"active": true,
"fields_map": [
],
"parameter_format_id": null,
"custom_parameter": {
"name": "coupon"
}
},
{
"value": "monthly-date_20200911-head_nowwork-ads",
"active": true,
"fields_map": [
{
"prefix": null,
"suffix": null,
"field_id": 467,
"field_name": "Interval",
"final_value": "monthly",
"input_value": "monthly"
},
{
"prefix": "date_",
"suffix": "",
"field_id": 477,
"field_name": "Date",
"final_value": "date_20200911",
"input_value": "20200911"
},
{
"prefix": "head_",
"suffix": "",
"field_id": 479,
"field_name": "Name",
"final_value": "head_nowwork",
"input_value": "nowwork"
},
{
"prefix": null,
"suffix": null,
"field_id": 478,
"field_name": "Channel",
"final_value": "ads",
"input_value": "ads"
}
],
"parameter_format_id": 56789,
"custom_parameter": {
"name": "cid"
}
}
],
"info_field_values": [
{
"value": "Bob Smith",
"active": true,
"fields_map": [
],
"parameter_format_id": null,
"info_field": {
"name": "Requester"
}
},
{
"value": "Buy Now",
"active": true,
"fields_map": [
],
"parameter_format_id": null,
"info_field": {
"name": "Ad Headline"
}
}
],
"labels": [
{
"name": "urgent"
},
{
"name": "blog"
}
],
"short_url": {
"clicks": 0,
"url": "https://shor.ty/0kuszj"
},
"created_at": 1605052800,
"updated_at": 1712255750,
"created_by": {
"email": "abc@example.com"
},
"created_by_api": false
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
data | An array of items |
meta[page] | Current page number |
meta[has_more] | true if more items are available on the next page. Otherwise false |
Create a link
A link can be created with or without a convention. When creating a link with a convention, pass the values for the fields in the convention. The fields data can be obtained from Convention endpoints.
Request Endpoint
curl "https://api.terminusapp.com/v1/projects/prj_8TnbZIDReq/links" -d '{"url":"http://www.website-1.com/","convention":{"id":91,"input_fields":[{"field_id":1094,"input_value":"weekly"},{"field_id":1095,"input_value":"2024-12-20"},{"field_id":1096,"input_value":"testing123"},{"field_id":1097,"input_value":"email"},{"field_id":1098,"input_value":"newsletter1"}]},"utm":{"content":{"tag":"content-test"},"term":{"tag":"term-test"}},"custom":{"coupon":{"tag":"custom1-test"}},"info":{"Requester":{"tag":"info1-test"}},"label_names":["test-label1"],"description":"Test Description for Link","short_url_key":"custom_url_key","skip_url_validation":false}' -X POST \
-H "Content-Type: application/json" \
-u YOUR_API_KEY:
POST /v1/projects/:project_id/links
Parameters
{"url":"http://www.website-1.com/","convention":{"id":91,"input_fields":[{"field_id":1094,"input_value":"weekly"},{"field_id":1095,"input_value":"2024-12-20"},{"field_id":1096,"input_value":"testing123"},{"field_id":1097,"input_value":"email"},{"field_id":1098,"input_value":"newsletter1"}]},"utm":{"content":{"tag":"content-test"},"term":{"tag":"term-test"}},"custom":{"coupon":{"tag":"custom1-test"}},"info":{"Requester":{"tag":"info1-test"}},"label_names":["test-label1"],"description":"Test Description for Link","short_url_key":"custom_url_key","skip_url_validation":false}
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
url required | Destination URL |
convention[id] | Convention ID. REQUIRED only while creating a link with convention |
convention[input_fields][field_id] | Field id. REQUIRED only while creating a link with convention |
convention[input_fields][input_value] | Input Value for Field. REQUIRED only while creating the link with convention |
utm[campaign][tag] | Value for UTM Campaign tag. REQUIRED if configured in the project and not set via a convention |
utm[medium][tag] | Value for UTM Medium tag. REQUIRED if configured in the project and not set via a convention. |
utm[source][tag] | Value for UTM Source tag. REQUIRED if configured in the project and not set via a convention. |
utm[content][tag] | Value for UTM Content tag. REQUIRED if configured in the project and not set via a convention. |
utm[term][tag] | Value for UTM Term tag. REQUIRED if configured in the project and not set via a convention. |
custom[parameter_name][tag] | Value for Custom Parameter tag. Replace the parameter_name with the actual custom parameter name. REQUIRED if configured in the project and not set via a convention. |
info[info_field_name][tag] | Value for Info Field. Replace the info_field_name with the actual info field name. REQUIRED if configured in the project and not set via a convention. |
label_names | Array of labels as strings, e.g. ["blog", "urgent"] |
description | Description for Link |
skip_monitoring | Skip URL monitoring on this URL |
short_url_key | Short URL key to use for this URL. If not specified, it will be automatically generated |
skip_url_validation | Skip URL validation on this URL |
Response
{
"id": 3884,
"url": "http://www.website-1.com/",
"long_url": "http://www.website-1.com/?coupon=custom1-test&utm_source=newsletter1&utm_medium=email&utm_campaign=weekly:int-date_2024_12_20-testing123&utm_term=term-test&utm_content=content-test",
"description": "Test Description for Link",
"campaign": {
"value": "weekly:int-date_2024_12_20-testing123",
"fields_map": [
{
"field_id": 1094,
"field_name": "Interval",
"final_value": "weekly:int",
"input_value": "weekly",
"prefix": null,
"suffix": ":int"
},
{
"field_id": 1095,
"field_name": "Campaign Date",
"final_value": "date_2024_12_20",
"input_value": "2024_12_20",
"prefix": "date_",
"suffix": null
},
{
"field_id": 1096,
"field_name": "Headline",
"final_value": "testing123",
"input_value": "testing123",
"prefix": null,
"suffix": null
}
],
"parameter_format_id": 596
},
"medium": {
"value": "email",
"fields_map": [
{
"field_id": 1097,
"field_name": "Email",
"final_value": "email",
"input_value": "email",
"prefix": null,
"suffix": null
}
],
"parameter_format_id": 597
},
"source": {
"value": "newsletter1",
"fields_map": [
{
"field_id": 1098,
"field_name": "Email Source",
"final_value": "newsletter1",
"input_value": "newsletter1",
"prefix": null,
"suffix": null
}
],
"parameter_format_id": 598
},
"content": {
"value": "content-test",
"fields_map": [
],
"parameter_format_id": null
},
"term": {
"value": "term-test",
"fields_map": [
],
"parameter_format_id": null
},
"custom_parameter_values": [
{
"value": "custom1-test",
"active": true,
"fields_map": [
],
"parameter_format_id": null,
"custom_parameter": {
"name": "coupon"
}
}
],
"info_field_values": [
{
"value": "info1-test",
"active": true,
"fields_map": [
],
"parameter_format_id": null,
"info_field": {
"name": "Requester"
}
}
],
"labels": [
{
"name": "test-label1"
}
],
"short_url": {
"clicks": 0,
"url": "https://shor.ty/custom_url_key"
},
"created_at": 1734672973,
"updated_at": 1734672973,
"created_by": null,
"created_by_api": true,
"duplicate": false
}
Name | Description |
---|---|
id | Link Id |
url | Link base URL |
long_url | Link long URL with all the parameters |
description | Description for Link |
campaign | UTM campaign with final value , fields_map array and parameter_format_id |
medium | UTM medium with final value , fields_map array and parameter_format_id |
source | UTM source with final value , fields_map array and parameter_format_id |
content | UTM content with final value , fields_map array and parameter_format_id |
term | UTM term with final value , fields_map array and parameter_format_id |
custom_parameter_values | List of all Custom Parameter values with final value , fields_map array and parameter_format_id |
info_field_values | List of all Info Field values with final value , fields_map array and parameter_format_id |
labels | List of labels applied |
short_url[clicks] | Number of clicks on the short URL |
short_url[url] | Short URL for the Link |
created_at | Timestamp when the Link was created |
updated_at | Timestamp when the Link was last updated |
created_by | User who created the Link |
created_by_api | Whether the Link is created through an API |
duplicate | Returns true if another link with same long_url already exists in the project |
Download QR code
QR code can be downloaded for either the fully tagged URL or the short URL.
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_I5bgXoK6OY/links/3885/qrcode?format=png" -X GET \
-H "Content-Type: application/json" \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/links/:id/qrcode
Parameters
format: png
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
id required | Link ID |
format required | Image format for the QR code. Accepted values are png or svg . |
size | Size of the QR code file. Accepted values are from 200 to 800. |
transparency | Applies transparent background to the QR code if possible. Accepted values are true or false . |
url_type | Type of URL to generate QR code for. Accepted values are long or short . |
subtext | Subtext to be displayed below the QR code. Maximum 30 characters. |
Response
"[binary data]"
Mediums
List Medium Values
Get UTM Medium values
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_t2NgpEjVL9/mediums" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/mediums
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"value": "blog-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "blog-2",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-2",
"fields_map": [
],
"parameter_format_id": null
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
value | Medium tag |
fields_map | Fields Data saved for the this Medium Value |
parameter_format_id | Parameter Format ID used to save the Medium Value |
Parameter Formats
List parameter formats
Get a list of Parameter Formats
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_qsEKSZM355/parameter_formats" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/parameter_formats
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
Response
{
"data": [
{
"id": 601,
"name": "Email Campaign Format",
"separator": "-",
"fields": [
{
"id": 1101,
"name": "Interval",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": ":int",
"option_values": [
{
"name": "weekly",
"description": "Weekly newsletter",
"position": 1
},
{
"name": "monthly",
"description": "Monthly newsletter",
"position": 2
},
{
"name": "yearly",
"description": "",
"position": 3
}
]
},
{
"id": 1102,
"name": "Campaign Date",
"description": null,
"required": true,
"type": "DateField",
"date_format": "YYYY_MM_DD",
"constant_value": null,
"prefix": "date_",
"suffix": null,
"option_values": [
]
},
{
"id": 1103,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
},
{
"id": 1104,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
}
]
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
data | An array of items |
meta[page] | Current page number |
meta[has_more] | true if more items are available on the next page. Otherwise false |
Get a parameter format
Get a specific Parameter Format
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_l8CtmvHm5W/parameter_formats/602" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/parameter_formats/:parameter_format_id
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
parameter_format_id required | Parameter format id |
Response
{
"id": 602,
"name": "Email Campaign Format",
"separator": "-",
"fields": [
{
"id": 1105,
"name": "Interval",
"description": null,
"required": true,
"type": "OptionField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": ":int",
"option_values": [
{
"name": "weekly",
"description": "Weekly newsletter",
"position": 1
},
{
"name": "monthly",
"description": "Monthly newsletter",
"position": 2
},
{
"name": "yearly",
"description": "",
"position": 3
}
]
},
{
"id": 1106,
"name": "Campaign Date",
"description": null,
"required": true,
"type": "DateField",
"date_format": "YYYY_MM_DD",
"constant_value": null,
"prefix": "date_",
"suffix": null,
"option_values": [
]
},
{
"id": 1107,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
},
{
"id": 1108,
"name": "Headline",
"description": null,
"required": true,
"type": "TextField",
"date_format": null,
"constant_value": null,
"prefix": null,
"suffix": null,
"option_values": [
]
}
]
}
Name | Description |
---|---|
id | Parameter format id |
name | Given name of the parameter format |
separator | Separator character used to join the fields |
fields | An array of field objects |
Projects
List projects
Get a list of projects
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/
Parameters
Name | Description |
---|---|
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
Response
{
"data": [
{
"id": "prj_iqYhY5jSTz",
"name": "My project"
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
data | An array of items |
meta[page] | Current page number |
meta[has_more] | true if more items are available on the next page. Otherwise false |
Sources
List Source Values
Get UTM Source values
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_kgUxawjO2X/sources" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/sources
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"value": "blog-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "blog-2",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-2",
"fields_map": [
],
"parameter_format_id": null
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
value | Source tag |
fields_map | Fields Data saved for the this Source Value |
parameter_format_id | Parameter Format ID used to save the Source Value |
Terms
List Term Values
Get UTM Term values
Request Endpoint
curl -g "https://api.terminusapp.com/v1/projects/prj_wPtiNOIxCC/terms" -X GET \
-u YOUR_API_KEY:
GET /v1/projects/:project_id/terms
Parameters
Name | Description |
---|---|
project_id required | Project ID starting with prj_ |
page | Specify the page number to get items that cannot be returned in a single request. Default is 1. |
items | Number of items to be returned. This can range between 1 and 100. Default is 10. |
Response
{
"data": [
{
"value": "blog-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "blog-2",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-1",
"fields_map": [
],
"parameter_format_id": null
},
{
"value": "sale-2",
"fields_map": [
],
"parameter_format_id": null
}
],
"meta": {
"page": 1,
"has_more": false
}
}
Name | Description |
---|---|
value | Term tag |
fields_map | Fields Data saved for the this Term Value |
parameter_format_id | Parameter Format ID used to save the Term Value |
Errors
The Terminus API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- You are not allowed to access this resource. |
404 | Not Found -- The specified resource could not be found. |
429 | Too Many Requests -- Your have hit the API rate limit. Try after some time. |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |