Extendify Analytics API Documentation

Version 2

Overview

The Extendify Analytics API allows authorized partners to access information about multiple sites on their service, with flexible filtering and pagination.

API Versioning

The current version is v2, and it should be included in the base URL of all requests:

https://insights.extendify.com/api/v2/

Access

All endpoints require authorization.

Authorization: Bearer API_TOKEN

Ensure your API key is kept secure and not exposed in shared or public spaces.

General Error Handling

Our API uses conventional HTTP response codes to indicate the success or failure of requests. Clients should handle each response appropriately. Common response codes include:

Code Meaning
429 Too Many Requests
500 Internal Server Error
401 Unauthorized
400 Bad Request

In each case, the response body will contain a JSON object with a message describing the error.

{
    "error": "Error message."
}

Rate Limiting

The API has a rate limit of 100 requests per 10 seconds.

The following information will be sent back in the response header (example values):

X-Ratelimit-Limit: 100
X-Ratelimit-Remaining: 99
X-Ratelimit-Reset: 1712741510000

Support

For any questions or issues with the API, please contact our partner support team at partners@extendify.com

Endpoints

The API includes a single endpoint for accessing site profiles.

Get site profiles

GET /site-profile

Headers

Authorization: Bearer YOUR_TOKEN

Query Parameters

Name Type Required Description
url String No The URL of the site to retrieve. Use the fully qualified domain name (FQDN).
partnerId String No Filter by partner ID.
page Number No Page number for pagination (default: 1).
format String No Response format: json (default) or csv.

Query Parameter Examples

Passing in a url will override the partnerId, and page parameters. Otherwise, you can use any combination of the parameters to filter the results.

Get site info for all sites:
GET /site-profile

This will return all sites for all partner IDs the user has access to.

Get site info for a specific url:
GET /site-profile?url=https://example.com

Querying for a specific site by URL will return an array with one site object.

Get all sites for a specific partner ID:
GET /site-profile?partnerId=12345

This will return all sites for the specified partner ID.

Get site info in CSV format:
GET /site-profile?format=csv

This will return the response in CSV format. See below for response information. The default is JSON.

Successful Response

Each json response will follow the same structure, regardless of the number of sites returned.

{
    "data": [
        {
            "site_id": "string",
            "site_url": "string",
            "site_title": "string",
            "site_created_at": "2024-01-01T00:00:00.000Z",
            "site_structure": "string",
            "site_objective": "string",
            "site_category": "string",
            "site_goals": ["string"],
            "site_launched": true,
            "launch_loaded_at": "2024-01-01T00:00:00.000Z",
            "launch_selected_pages": ["string"],
            "partner_id": "string",
            "partner_name": "string"
        }
    ],
    "pagination": {
        "total": 123,
        "totalPages": 2,
        "hasNextPage": true,
        "hasPreviousPage": false,
        "nextPage": 2,
        "previousPage": false,
        "currentPage": 1,
        "pageSize": 100
    }
}

CSV Response

The CSV response will contain the same data as the JSON response, but in a comma-separated format. Additionally, the pagination information will be included in the response headers.

Example CSV Response Headers

Content-Type: text/csv
X-Total-Count: 123
X-Total-Pages: 2
X-Current-Page: 1
X-Page-Size: 100
X-Has-Next-Page: 1
X-Has-Previous-Page: 0
X-Previous-Page: -1
X-Next-Page: 2

Response Body

site_id,site_url,site_title,site_created_at,site_structure,site_objective,site_category,site_goals,site_launched,launch_loaded_at,launch_selected_pages,partner_id,partner_name
"abc123","https://www.example.com","Example Site","2024-01-01T00:00:00.000Z","structure","objective","category","goal1;goal2","true","2024-01-01T00:00:00.000Z","home:about","partner1","Partner Name"
...

Pagination

Every response will include pagination information in the response. For CSV responses, this information will be included in the headers. The pagination information includes:

Key Description
X-Total-Count Total number of results
X-Total-Pages Total number of pages
X-Current-Page Current page number
X-Page-Size Number of items per page
X-Has-Next-Page 1 if next page exists
X-Has-Previous-Page 1 if previous page exists
X-Previous-Page Previous page number or -1
X-Next-Page Next page number or -1