Skip to main content

Endpoint reference

This page is the normative reference for the Explore / Crosstab API (OAS3). It tracks the OpenAPI document, which is the machine-readable source of truth — the examples on this site are validated against it at build time.

Working from the spec

Point your generator at /openapi/sample-api.yaml (or GET /docs) to produce a typed client rather than hand-writing request models. The operationId values below are the names your generator will use.

Server

Base URLhttps://engines.api.telmar.com/omg/prd/v1
Media typeapplication/json
AuthTelmar-Engine-Authorizer: <api-key>

All endpoints below are relative to the base URL.

Operations

| Method | Path | Description | Auth | Billed | | --- | --- | --- | --- | | GET | /docs | Returns the OpenAPI specification for this service in JSON format | Not required | No | | POST | /crosstab | Executes a crosstab query against the dataset and returns weighted audience results | Required | Yes, on success | | OPTIONS | /crosstab | CORS preflight check for the /crosstab endpoint | Not required | No |

operationIdMethod and path
docsGET /docs
crosstabPOST /crosstab
crosstabOptionsOPTIONS /crosstab

GET /docs

Returns the full OpenAPI specification for this service as a JSON object. Useful for programmatic discovery of the API schema. No authentication is required.

Parameters

None.

Response — 200 OK

FieldTypeDescription
(body)objectThe OpenAPI specification document in application/json format

POST /crosstab

Executes a crosstab query against a specified survey dataset. Returns weighted audience counts, unweighted respondent counts, and stability indicators for each requested target code.

Request

Content-Typeapplication/json
BodyCrosstabRequest (required)

Request schema — CrosstabRequest

FieldTypeRequiredDescription
SurveyCodestringYesIdentifies the target survey dataset (e.g. "M20F")
AuthorizationGroupstringNoAuthorization group filter. Use "_ALL_" to include all groups
PopulationBaseCodestringYesPopulation base for the query (e.g. "AR18_24")
TargetCodesstring[]YesTarget segment codes. Min 1 item, max 2 items
Request example
{
"SurveyCode": "M20F",
"AuthorizationGroup": "_ALL_",
"PopulationBaseCode": "AR18_24",
"TargetCodes": ["OMEN", "OWOMEN"]
}

This example queries the M20F survey using AR18_24 as the population base, and returns results for two target segments: OMEN (Men) and OWOMEN (Women).

Response schema — CrosstabResponse

FieldTypeDescription
ResultCodeintegerNumeric status code. 0 indicates success
ResultDescriptionstringHuman-readable description of the result status
ResultsCrosstabResult[]One result object per TargetCode. Min 1, max 2
AudienceReportUnitsintegerAudience unit multiplier applied to weighted counts (e.g. 1000)

Result object — CrosstabResult

FieldTypeDescription
WgtAudnumber (float)Weighted projected audience size. Multiply by AudienceReportUnits for the absolute figure
RespsintegerUn-weighted count of respondents matching this target code
Stblinteger (0 | 1)Stability factor. 0 = Stable, 1 = Unstable. Unstable results indicate low respondent counts and should be used with caution
Response example — 200 OK
{
"ResultCode": 0,
"ResultDescription": "",
"Results": [
{ "Resps": 1000, "WgtAud": 10000, "Stbl": 0 },
{ "Resps": 123, "WgtAud": 4444, "Stbl": 1 }
],
"AudienceReportUnits": 1000
}

Response headers

HeaderType
Access-Control-Allow-Originstring

OPTIONS /crosstab

CORS preflight endpoint for the /crosstab path. Browsers issue this automatically before cross-origin POST requests. No parameters required.

Response — 200 OK

HeaderType
Access-Control-Allow-Originstring
Access-Control-Allow-Methodsstring
Access-Control-Allow-Headersstring

Error codes

The API uses standard HTTP status codes. The ResultCode field in the response body provides additional detail.

HTTP codeResultCodeMeaning
2000Success. Results returned normally
200> 0Partial or conditional result. Check ResultDescription
400Bad request. Malformed JSON or missing required fields
401Unauthorized. Verify API key or Cognito credentials
403Forbidden. User does not have access to the requested dataset
500Internal server error. Contact TelmarHelixa support

Limits

LimitValue
Target codes per request1–2
Result shape1 column × up to 2 rows (or 2 columns × 1 row)
Maximum rows per axis5,000 (may be adapted in future versions)
Surveys per request1
Population bases per request1

Commercial terms — volume commitments, contracted throughput and pricing — are part of your agreement and are not published here. Contact Sales.