Infosec IQ Public API (2.0)

Download OpenAPI specification:Download

Welcome to the Infosec IQ REST API Version 2 documentation!

Authentication

BearerAPIToken

Before you begin, you will need an API Token. You can generate a token within the IQ app.

Security Scheme Type API Key
Header parameter name: Authorization

Retrieve an assessment

This endpoint retrieves an assessment by ID.

path Parameters
id
required
string (id)

The ID of the requested assessment

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "show_explanations": true,
  • "show_results": true,
  • "show_summary": true,
  • "show_correct_wrong_counter": true,
  • "show_progress": true,
  • "created": "string",
  • "modified": "string",
  • "passing_percentage": "string",
  • "description": "string"
}

List batteries

This endpoint retrieves a list of PhishSim template batteries.

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List brands

This endpoint retrieves a list of brands.

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Create campaign enrollments

This endpoint enrolls a learner into a campaign.

path Parameters
campaign_id
required
string (campaign_id)

ID of campaign to enroll learner

Request Body schema: application/json

The request body

learner_id
string

Unique identifier for the learner

Responses

Request samples

Content type
application/json
{
  • "learner_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "learner": {
    },
  • "campaign": {
    }
}

List campaign runs

This endpoint retrieves a list of campaign runs.

path Parameters
id
required
string (id)

The id of the campaign

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Retrieve a campaign run

This endpoint retrieves a specific campaign run.

path Parameters
campaign_id
required
string (campaign_id)

The id of the campaign

run_id
required
string (run_id)

The id of the campaign run

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve statistics about a campaign run

This endpoint retrieves various statistics about a campaign run.

path Parameters
campaign_id
required
string (campaign_id)

The id of the campaign

run_id
required
string (run_id)

The id of the campaign run

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve statistics about learners in a campaign run

This endpoint retrieves the status of each learner enrolled in an campaign.

path Parameters
campaign_id
required
string (campaign_id)

The id of the campaign

run_id
required
string (run_id)

The id of the campaign run

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List campaigns

This endpoint retrieves a page of campaigns, optionally filtered by name parameter, campaign type, or running status.

query Parameters
name
string (name)

Search campaigns by name

page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

type[]
Array of strings (type[])
Items Enum: "awareness" "phish"
Example: type[]=awareness&type[]=phish

Array of campaign type(s) to filter by

running
boolean (running)
Example: running=true

Optional running status to filter by

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Retrieve a campaign

This endpoint retrieves a campaign by id.

path Parameters
id
required
string (id)

The requested campaign id

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "type": "string",
  • "running": true
}

Retrieve campaign details (clone)

This endpoint retrieves campaign details by id, in the shape needed to clone it.

path Parameters
id
required
string (id)

The requested campaign id

Responses

Create a new AwareEd campaign

This endpoint creates a new AwareEd campaign.

Request Body schema: application/json
name
string
course_id
string
is_test
boolean
branding_id
string
language_id
string
autoplay
boolean
enable_completion_cert
boolean
require_assessment_retake
boolean
lock_learners_out
boolean
learner_auth_enabled
boolean
reset_progress
boolean
schedule_interval_units
string
Enum: "number_of_days" "day" "week" "month" "quarter"

Send learners training daily, weekly, etc

number_of_days
integer

Required if schedule_interval_units="number_of_days"

number_of_repeats
integer

Required if schedule_interval_units="number_of_days"

start_date
string

Format: YYYY-MM-DD

object

List of notifications for Enrollment, Start, Finish, and Completion

all_learners
boolean

Enroll all learners

learner_group_ids
Array of strings

Can only be included if all_learners=false

learner_ids
Array of strings

Can only be included if all_learners=false

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "course_id": "string",
  • "is_test": true,
  • "branding_id": "string",
  • "language_id": "string",
  • "autoplay": true,
  • "enable_completion_cert": true,
  • "require_assessment_retake": true,
  • "lock_learners_out": true,
  • "learner_auth_enabled": true,
  • "reset_progress": true,
  • "schedule_interval_units": "number_of_days",
  • "number_of_days": 0,
  • "number_of_repeats": 0,
  • "start_date": "string",
  • "notifications": {
    },
  • "all_learners": true,
  • "learner_group_ids": [
    ],
  • "learner_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "type": "string",
  • "running": true
}

Create a new PhishSim campaign

This endpoint creates a new PhishSim campaign.

Request Body schema: application/json
name
string
is_test
boolean
templates
Array of strings

List of template IDs

batteries
Array of strings

List of battery IDs

categories
Array of strings

List of category IDs

send_all_templates
boolean
template_send_count
integer
track_replies
boolean
track_reply_action
string
Enum: "none" "store"
branding_id
string
schedule_interval_units
string
Enum: "number_of_days" "all_at_once" "day" "week" "month" "quarter"

Send learners training daily, weekly, etc

number_of_days
integer

Required if scheduled_interval_units="number_of_days"

number_of_repeats
integer

Required if scheduled_interval_units="number_of_days"

start_date
string

Format: YYYY-MM-DD

start_hour
string

Number between 0 and 23. Used only if scheduled_interval_units="all_at_once"

phished_notification_id
string

Optional

add_phished_learners_to_group_id
string

Optional

all_learners
boolean

Enroll all learners

learner_group_ids
Array of strings

Can only be included if all_learners=false

learner_ids
Array of strings

Can only be included if all_learners=false

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "is_test": true,
  • "templates": [
    ],
  • "batteries": [
    ],
  • "categories": [
    ],
  • "send_all_templates": true,
  • "template_send_count": 0,
  • "track_replies": true,
  • "track_reply_action": "none",
  • "branding_id": "string",
  • "schedule_interval_units": "number_of_days",
  • "number_of_days": 0,
  • "number_of_repeats": 0,
  • "start_date": "string",
  • "start_hour": "string",
  • "phished_notification_id": "string",
  • "add_phished_learners_to_group_id": "string",
  • "all_learners": true,
  • "learner_group_ids": [
    ],
  • "learner_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "type": "string",
  • "running": true
}

List categories

This endpoint retrieves a list of categories.

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List courses

This endpoint retrieves a list of courses.

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Retrieve a course

This endpoint retrieves a course by id.

path Parameters
id
required
string (id)

The ID of the requested course

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List languages

This endpoint retrieves a list of languages.

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List Learner Groups

This endpoint retrieves a list of target groups.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Retrieve a learner group

This endpoint retrieves a learner group by ID.

path Parameters
id
required
string (id)

The ID of the requested learner group

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "type": "string",
  • "modified": "string"
}

List learners in a group

This endpoint retrieves a list of learners in a group.

path Parameters
group_id
required
string (group_id)

The ID of the learner group

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List learner timeline events

This endpoint retrieves a page of timeline events associated with the given Learner ID.

path Parameters
learner_id
required
string

Learner id

query Parameters
start
string (start)

Earliest time (yyyy-mm-dd HH:MM:SS:z or yyyy-mm-dd HH:MM:SS) TimelineEvent could have occurred (inclusive).

end
string (end)

Latest time (yyyy-mm-dd HH:MM:SS:z or yyyy-mm-dd HH:MM:SS) TimelineEvent could have occurred (exclusive).

page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List learners

This endpoint retrieves a page of learners, optionally filtered by an email, first name, or last name parameter.

query Parameters
email
string (email)

Search learners by email

first_name
string (first_name)

Search learners by first name

last_name
string (last_name)

Search learners by last name

start
string (start)

Earliest time (yyyy-mm-dd HH:MM:SS:z or yyyy-mm-dd HH:MM:SS) the learner could have been last modified (inclusive).

end
string (end)

Latest time (yyyy-mm-dd HH:MM:SS:z or yyyy-mm-dd HH:MM:SS) the learner could have been last modified (exclusive).

page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Create a new learner

This endpoint creates a new learner.

Request Body schema: application/json
email
string
first_name
string
last_name
string
title
string
department
string
phone
string
address1
string
address2
string
city
string
state
string
zip
string
country
string
custom
string
manager_name
string
manager_email
string
group_name
string
custom2
string
custom3
string
custom4
string
custom5
string
custom6
string

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "title": "string",
  • "department": "string",
  • "phone": "string",
  • "address1": "string",
  • "address2": "string",
  • "city": "string",
  • "state": "string",
  • "zip": "string",
  • "country": "string",
  • "custom": "string",
  • "manager_name": "string",
  • "manager_email": "string",
  • "group_name": "string",
  • "custom2": "string",
  • "custom3": "string",
  • "custom4": "string",
  • "custom5": "string",
  • "custom6": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "modified": "string",
  • "dashboard_url": "string",
  • "learner_profile": {
    },
  • "groups": {
    }
}

Retrieve a learner

This endpoint retrieves a learner by ID.

path Parameters
id
required
string

The ID of the requested learner

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "modified": "string",
  • "dashboard_url": "string",
  • "learner_profile": {
    },
  • "groups": {
    },
  • "learner_stat": {
    }
}

Edit an existing learner

This endpoint edits the personal information of a specific learner.

path Parameters
id
required
string

The ID of the learner to modify

Request Body schema: application/json

The request body

email
string
first_name
string
last_name
string
title
string
department
string
phone
string
address1
string
address2
string
city
string
state
string
zip
string
country
string
custom
string
manager_name
string
manager_email
string
group_name
string
custom2
string
custom3
string
custom4
string
custom5
string
custom6
string

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "title": "string",
  • "department": "string",
  • "phone": "string",
  • "address1": "string",
  • "address2": "string",
  • "city": "string",
  • "state": "string",
  • "zip": "string",
  • "country": "string",
  • "custom": "string",
  • "manager_name": "string",
  • "manager_email": "string",
  • "group_name": "string",
  • "custom2": "string",
  • "custom3": "string",
  • "custom4": "string",
  • "custom5": "string",
  • "custom6": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "modified": "string",
  • "dashboard_url": "string",
  • "learner_profile": {
    },
  • "groups": {
    }
}

Delete a learner

This endpoint deletes a learner specified by ID.

path Parameters
id
required
string (id)

The ID of the learner to delete

Responses

Retrieve a module

This endpoint retrieves a module by ID.

path Parameters
id
required
string (id)

The ID of the requested module

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "file_size_mb": 0
}

List notifications

This endpoint retrieves a list of notifications.

query Parameters
type[]
Array of strings (type[])
Items Enum: "enrollment" "start" "finish" "completion" "phished" "phish_hunter"
Example: type[]=start&type[]=enrollment

Array of notification type(s) to filter by

page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

List PhishHunter Messages

This endpoint retrieves a page of PhishHunter messages.

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Retrieve a message from PhishHunter

This endpoint retrieves a message and all of its components.

path Parameters
id
required
string

The ID of the requested message

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "domain": "string",
  • "received": "string",
  • "original_file_url": "string",
  • "reported": "string",
  • "reporter": "string",
  • "risk_score": 0,
  • "sender": "string",
  • "subject": "string",
  • "tags": [
    ],
  • "components": [
    ]
}

Retrieve a quarantined email

This endpoint retrieves a quarantined email by ID.

path Parameters
id
required
string (id)

The ID of the requested quarantined email

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "from_email": "string",
  • "to_email": "string",
  • "from_name": "string",
  • "subject": "string",
  • "date": "string"
}

List PhishSim templates

This endpoint retrieves a list of PhishSim templates

query Parameters
page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of result pages to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}

Retrieve a PhishSim template

This endpoint retrieves an email template by ID.

path Parameters
id
required
string (id)

The ID of the requested template

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "string",
  • "name": "string",
  • "from_name": "string",
  • "from_email": "string",
  • "subject": "string",
  • "html": "string",
  • "category": "string",
  • "is_public": true,
  • "is_system": true,
  • "has_indicators": true,
  • "attachment_type": "string",
  • "attachment_name": "string",
  • "phish_rate": 0,
  • "open_rate": 0,
  • "difficulty": 0
}

List timeline events

This endpoint retrieves a page of timeline events, optionally filtered by type and/or date range.

query Parameters
type
string (TimelineEventType)
Enum: "added-to-group" "removed-from-group" "created-learner" "scheduled-in-phish-campaign" "scheduled-in-phish-campaign-run" "sent-phish-email" "phished-learner" "entered-data" "opened-attachment" "opened-phish" "started-phish-training" "completed-phish-training" "submitted-phishsim-email" "submitted-phishing-email" "scheduled-in-aware-campaign" "scheduled-in-aware-campaign-run" "started-aware-course" "started-aware-module" "completed-aware-module" "stopped-aware-course" "completed-aware-course" "started-aware-assessment" "completed-aware-assessment" "passed-aware-assessment" "failed-aware-assessment" "stopped-aware-assessment" "stopped-aware-module" "started-aware-reminder" "finished-aware-reminder" "enabled-macro" "fast-clicked" "accepted-policy" "changed-learner-status" "changed-defender-status" "replied" "matched-pattern" "core-behavior-score-changed" "adaptive-assessment-completed" "recommendation-completed" "recommendation-started"

Search TimelineEvents by type

start
string (start)

Earliest time (yyyy-mm-dd HH:MM:SS:z or yyyy-mm-dd HH:MM:SS) TimelineEvent could have occurred (inclusive).

end
string (end)

Latest time (yyyy-mm-dd HH:MM:SS:z or yyyy-mm-dd HH:MM:SS) TimelineEvent could have occurred (exclusive).

page
integer (page) >= 1
Default: 1

Which page of results to return

limit
integer (limit) [ 1 .. 100 ]
Default: 20

Number of results to return

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": {
    }
}