QMAPI API DOCUMENTATION

Introduction

Welcome to the official engineering documentation of Qmapi

In the fast-paced world of business, market research is crucial. It shapes decisions, defines strategies, and drives success. But let’s be honest—traditional market research operations (MR Ops) are slow, rigid, and often get bogged down in inefficiencies. At qmapi, we’re not here to overpromise or revolutionize the world overnight. What we are doing is using technology to simplify MR Ops, making it more agile, scalable, and ultimately, more effective.

The Demand and Supply APIs provide a simple way to connect to millions of people and get answers in real time. By specifying a set of demographic qualifications and quotas, buyers can target a wide or very specific population on a topic of your choosing. As a supplier, you get fine grain control over your survey matching and business relationships on the platform. We want to encourage innovation with minimal limits. We ask that you please be practical and considerate when determining call frequencies. We rate limit when needed to protect the system and ensure the highest level of service to all of our clients, For More Information visit our QMAPI Website.

Are You New to Surveys & Market Research? For definitions of common terminology you may see in our documentation, read our Global Parameters

Authentication

Token-based authentication in the request Header is used by the API that is covered in this documentation. Clients must provide a token (given to them during integration) in the authorization Header of their HTTP requests in order to interact with the API endpoints and access protected resources. This token provides authenticated access to the features of the API and acts as a secure identity.

Client can safely authenticate their requests and confidently use the API's functionalities by conforming to this authentication protocol.

authorization: {{APIkey}}

STATUS CODE

Status Code Status Text Description
200 OK The request has succeeded. The meaning of a success varies depending on the HTTP method: GET: The resource has been fetched and is transmitted in the message body. POST: The resource describing the result of the action is transmitted in the message body.
201 Created The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.
400 Bad Request This response means that server could not understand the request due to invalid syntax.
401 Unauthorized Authentication is needed to get requested response. This is similar to 403, but in this case, authentication is possible.
403 Forbidden Client does not have access rights to the content so server is refusing to give proper response.
404 Not Found Server cannot find the requested resource.
500 Internal Server Error The server has encountered a situation it doesn’t know how to handle.
502 Bad Gateway The server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request.
503 Service Unavailable The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded.
504 Gateway Timeout This error response is given when the server is acting as a gateway and cannot get a response in time.

DEMAND API

Demand partners have an easy-to-use interface to submit their survey plans with the Demand API. This API enables demand partners to easily connect their survey plans into the ecosystem, supporting efficient data gathering and analysis procedures. It is designed to suit the changing requirements of market research initiatives.

Getting Started

Demand partners must first register for API access and receive authentication credentials in order to use the Demand API. After gaining authentication, they can use the given endpoints and data payloads to programmatically submit survey plans.

For detailed documentation on API endpoints, request and response formats, and authentication procedures, refer to the Demand API endpoints below.

We offer two convenient ways to create a survey

1.Visit our Create survey Page for a user-friendly experience, Simply fill out the provided form with your survey details and add your questions. Based on this information, we will generate a complete survey for you. Survey Form

2.You can send an API request to create a new survey by providing the required details such as: project name, survey name, the number of completes, and the survey's status, and it will return the created survey details upon success.

POST /Create/Survey
https://api.qmapi.com/api/v1/survey/create

Parameters

Name Located in Description Required Schema
id body Unique Account ID Yes string
projectName body Project name for the survey Yes string
CountryLanguageID body ID of the country and language for the survey No string
IndustryID body ID of the industry associated with the survey No integer
FID body Tracking ID for survey Creation Yes sub-Numeric
StudyTypeID body ID of the study type No integer
ClientCPI body Client cost per interview No decimal
ClientSurveyLiveURL body URL of the live survey No string
TestRedirectURL body URL for test redirects No string
IsActive body Specifies if the survey is active No boolean
Quota body Quota for the survey No integer
SurveyName body Name of the survey No string
status body Status of the survey No string
IR body Incidence rate No decimal
LOI body Length of interview No decimal
country body Country of the survey No string
endedAt body Survey end date No string
createdAt body Auto-generated creation timestamp No string (auto-generated)
updatedAt body Auto-generated update timestamp No string (auto-generated)

Request Body

 {
  "projectName": "Market Research Project",
  "CountryLanguageID": 15,
  "IndustryID": 2,
  "StudyTypeID": 3,
  "ClientCPI": 5.0,
  "ClientSurveyLiveURL": "https://example.com/live-survey",
  "TestRedirectURL": "https://example.com/test-redirect",
  "IsActive": true,
  "Quota": 100,
  "SurveyName": "Consumer Behavior Survey",
  "FID": "VWxZOTSx",
  "status": "live",
  "IR": 20,
  "LOI": 15,
  "country": "US",
  "endedAt": "2024-12-31T23:59:59Z",
  "Quotas": [
    {
      "Name": "Age Group 18-24",
      "Quota": 100,
      "IsActive": true,
      "Conditions": [
        {
          "QuestionID": 21,
          "PreCodes": [1, 2, 3]
        }
      ]
    }
  ],
  "Qualifications": [
    {
      "QuestionID": 22,
      "PreCodes": [4, 5]
    }
  ]
}

Response Body

{
    "status": "success",
            "data": {
                "result": {
                    "id": 17,
                    "projectName": "Market Research Project",
                    "IndustryID": 2,
                    "StudyTypeID": 3,
                    "ClientCPI": 5,
                    "ClientSurveyLiveURL": "https://example.com/live-survey",
                    "TestRedirectURL": "https://example.com/test-redirect",
                    "IsActive": true,
                    "Quota": 100,
                    "SurveyName": "Consumer Behavior Survey",
                    "Completes": null,
                    "FID": "To4fNtEU",
                    "status": "live",
                    "IR": 20,
                    "LOI": 15,
                    "country": "US",
                    "createdAt": "2024-12-23T06:37:58.000Z",
                    "updatedAt": "2024-12-23T06:37:58.000Z",
                    "Quotas": [
                        {
                            "SurveyQuotaID": 16,
                            "Name": "Age Group 18-24",
                            "Quota": 100,
                            "Completes": null,
                            "IsActive": true,
                            "SurveyID": 17,
                            "Conditions": [
                                {
                                    "PreCodes": [
                                        1,
                                        2,
                                        3
                                    ],
                                    "ConditionID": 16,
                                    "SurveyQuotaID": 16,
                                    "QuestionID": 21
                                }
                            ]
                        }
                    ],
                    "Qualifications": [
                        {
                            "PreCodes": [
                                4,
                                5
                            ],
                            "QualificationID": 16,
                            "SurveyID": 17,
                            "QuestionID": 22,
                            "createdAt": "2024-12-23T06:37:58.000Z",
                            "updatedAt": "2024-12-23T06:37:58.000Z"
                        }
                    ]
                }
            }
        }

Responses

Code Description
201 Successful response
400 Bad request
401 Unauthorized
To perform this operation, you must be authenticated by means of one of the following methods: ApiKeyAuth
PUT /update/:surveyid
https://api.qmapi.com/api/v1/survey/update/:surveyid

This API updates an existing survey by surveyid. It allows you to modify details such as project name, survey name, status, completes, and more.

Parameters

Name Located in Description Required Schema
ClientSurveyLiveURL body URL of the live survey No string
TestRedirectURL body URL for test redirects No string
ClientCPI body Client cost per interview No decimal
Qualification Model body Qualification model with name, question ID, and precode No array of objects
Quotas Model body Quotas model with SurveyQuotaID, name, type, quota, completes, and active status No array of objects

Request Body

{
    "status" : "live",
    "ClientCPI": 8.4
}

Response Body

{
    "status": "success",
    "data": {
        "SurveyID": 41,
        "ClientCPI": 8.4,
        "ClientSurveyLiveURL": "https://api.qmapi.com/live-survey",
        "TestRedirectURL": "https://api.qmapi.com/test-redirect",
        "IsActive": true,
        "status": "live"
    }
}

Responses

Code Description
201 Updated
400 Bad request
401 Unauthorized
404 Survey Not Found
500 Internal Server Error
To perform this operation, you must be authenticated by means of one of the following methods: ApiKeyAuth
POST /reconcillation/:surveyid
https://api.qmapi.com/api/v1/survey/reconcillation/:surveyid

This API endpoint triggers a reconciliation process for the survey identified by surveyid. The reconciliation process typically involves comparing or syncing the survey data with a specified source or resolving discrepancies in data.

Survey should be Marked Complete.

Parameters

Name Located in Description Required Schema
SurveyID query ID of Survey Yes integer
Status query Status code of survey No integer
AID query Unique response ID Yes integer
AccountID query ID of Account Yes integer

Responses

Code Description
200 Successful response
400 Bad request
401 Unauthorized
404 Record Not Found
To perform this operation, you must be authenticated by means of one of the following methods: ApiKeyAuth
GET /feasibility
https://api.qmapi.com/api/v1/survey/feasibility

The Feasibility Endpoint allows demand partners to check the feasibility of their survey requirements before creating a full survey plan. This endpoint helps in estimating the potential respondent pool and assessing the viability of the survey criteria.

Parameters

Name Located in Description Required Schema
LOI body Length of interview Yes integer
IR body Incidence rate Yes decimal
Country body Identifier for country language Yes integer
CPI body Cost per interview Yes decimal
FID body Field ID for tracking purposes Yes string

Request Body

{
    "LOI": 10,
    "IR": 5,
    "Country": "India"
}

Response Body

{
    "LOI": 10,
    "IR": 5,
    "Country": "India",
    "CPI": 11.44,
    "FID": "JKO3Aloj"
}

Responses

Code Description
200 Successful response
400 Bad request
401 Unauthorized
To perform this operation, you must be authenticated by means of one of the following methods: ApiKeyAuth

Supply API

Supply partners can easily acquire survey plan changes and synchronise data with ease thanks to the comprehensive solution provided by the Supply API. This API allows supply partners to easily acknowledge processed data and poll the system for the most recent updates. Its design simplifies the process of data retrieval and acknowledgement.

Key features

Real-time Data changes: By periodically polling the API, supply partners can obtain real-time changes to the survey plan, guaranteeing that they have access to the most recent data for informed decision-making.

Polling Mechanism: The API has a strong polling mechanism that enables supply partners to ask the system for updates on a regular basis. Polling intervals can be adjusted to meet supply partners' unique needs.

Asynchronous Processing: Because the API architecture is built for asynchronous processing, supply partners can easily retrieve updates without affecting the speed of the system.

GET /survey
https://api.qmapi.com/api/v2/survey

This API retrieves a list of surveys that are currently live (active and running), enabling users to fetch information about all ongoing surveys.

Authentication Token Example

Here are some Query Parameters

You can add query parameters to the base URL https://api.qmapi.com/api/v2/survey to filter surveys based on specific criteria. These parameters include limit which defaults to 200 but can be adjusted as needed, and Additionally, you can filter by loi, ir and exactcpi. By specifying these parameters, you can refine the survey results to better suit your requirements.

Country Code Reference
Code Country
US United States
AU Australia
SG Singapore
EG Egypt
AE United Arab Emirates
SA Saudi Arabia
MA malaysia
QA Qatar
limit:-  https://api.qmapi.com/api/v2/survey?limit={}
country:-  https://api.qmapi.com/api/v2/survey?country={}
exactcpi:-  https://api.qmapi.com/api/v2/survey?exactcpi={}
loi:-  https://api.qmapi.com/api/v2/survey?loi={}
ir:-  https://api.qmapi.com/api/v2/survey?ir={}
Get target:- https://api.qmapi.com/api/v2/survey?full=true&qualification=true&quota=true

Parameters

Name Located in Description Required Schema
survey_id body Unique identifier for the survey Yes integer
loi body Length of the interview in minutes No integer
ir body Estimated incidence rate No integer
cpi body Cost per interview No decimal

Response Body


            {
              "survey_id": 60920424,
              "loi": 20,
              "ir": 20,
              "cpi": 4.2,
              "livelink": "https://api.qmapi.com/api/v2/survey/redirect/60920424?SupplyID=[%SupplyID%]&PNID=[%AID%]&SessionID=[%sessionID%]&TID=[%TokenID%]"
          }
          {
              "survey_id": 60920434,
              "loi": 15,
              "ir": 30,
              "cpi": 1.2,
              "livelink": "https://api.qmapi.com/api/v2/survey/redirect/60920434?SupplyID=[%SupplyID%]&PNID=[%AID%]&SessionID=[%sessionID%]&TID=[%TokenID%]"
          }

Responses

Code Description
200 Successful response
500 Internal server Error
To perform this operation, you must be authenticated by means of one of the following methods: ApiKeyAuth

Security Hashing

This API uses the following security measures:

    livelink:- https://api.qmapi.com/api/v2/survey/redirect/59722755?SupplyID=[%SupplyID%]&PNID=[%AID%]&SessionID=[%sessionID%]&TID=[%TokenID%]
From the above URL, take the value provided below and complete all the required details."Perform SHA-256 Base64 encryption, Using the Secret Key Means(Secret Key for Hashing) after this you will get a Hashed Value.
    Authentication Token Example Then, encode this Hashed value to use .replace('+', '%2B').replace('/', '%2F').replace('=', '%3D') and retrieve the token value(TID)." After Replacement, you will get the below value, Now Put Below value in the Takone Value(TID). Authentication Token Example

      This is the final URL
    Authentication Token Example

    QMAPI User Experience

    To optimize the respondent experience and ensure they are matched with the most suitable survey opportunities, Qmapi streamlines the entire process for our Supply Partners. Once API integration is complete, respondents first go through a pre-screening step where a few essential qualifying questions are asked.

    This pre-screening minimizes respondent time spent on eligibility checks and accelerates their connection to relevant surveys.

    While sending traffic to a particular survey, our top priority is ensuring that each respondent is a good match and can successfully complete the study. We first attempt to match respondents to the intended survey using their profile data and pre-screening responses. If they do not qualify for that survey, we will automatically redirect them to an alternative study that best fits their profile. The payout for the new survey will be displayed in real time—both on the respondent’s landing page and in your dashboard.

    By focusing on conversion rates based on best survey match, Qmapi ensures a seamless and intelligent matching process thus maximizing completion rates while keeping respondents engaged and satisfied.

    Survey Form