Knak Sync Location API

Endpoints to retrieve Sync Location. This is a contract the CUSTOMER implements so their own logic determines and restricts the sync location for Knak assets; the base URL is the placeholder host Knak publishes in its specification (https://yourService.com/your-sync-location-api).

Operations 1

POST /v1/knak-sync-location Provide Sync Location for Asset

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/knak-sync-location-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

knak-sync-location-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: '## Overview

    An API specification to provide a Custom Sync Location in Knak.


    By implementing a service conforming to this API specification, you will be able to send asset data to your own service and have that service specify a sync location based on that data.


    ## Authentication

    Knak provides two options for authentication:

    - **Basic Authentication**: Knak will use Basic Authentication to authenticate with your API. You will just need to provide a username and password when configuring the integration.

    - **OAuth2**: Knak will use OAuth2 to authenticate with your API. You will need to implement endpoints under a specified authorization path to support this. The default path will be `/oauth/token` but you can provide a separate path when configuring the integration if you so choose. The flow used is the standard [Authorization Code Grant](https://tools.ietf.org/html/rfc6749#section-4.1).



    Knak will use the tokens generated to make requests from your service.


    ## Custom Sync Location

    When a user has a custom sync location configured and they have set up a sync restriction that leverages the custom sync location.

    Knak will call the `/knak-sync-location` (or your own specified path) endpoint with the asset data when an asset is synced. Your service should return a response with the sync location for the asset.


    When your service provides a sync location, Knak will use that location to display only the available sync location to the user.

    '
  version: V1
  title: Custom API Reference Sync Location API
  x-logo:
    url: https://s3.amazonaws.com/assets.knak.io/img/Knak-Logo-Medium.png
servers:
- url: https://yourService.com/your-sync-location-api
tags:
- name: Sync Location
  description: Endpoints to retrieve Sync Location
paths:
  /v1/knak-sync-location:
    post:
      tags:
      - Sync Location
      summary: Provide Sync Location for Asset
      description: Knak will call this endpoint to get the sync location for the asset. This is used to determine the sync location for the asset in Knak.
      security:
      - OAuth2: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        description: The type of the asset
                        example: email
                      id:
                        type: string
                        description: The ID of the asset
                        example: 66154fd1e9704
                      custom_field_example_1:
                        type: string
                        description: Can be any custom field you want to use to determine the sync location
                        example: newsletter
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          description: The type of the asset
                          example: email
                        id:
                          type: string
                          description: The ID of the asset
                          example: 66154fd1e9704
                        folder:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The ID of the folder or program
                              example: '1256'
                            title:
                              type: string
                              description: The title of the folder or program
                              example: My Favourite Program
                            is_root:
                              type: boolean
                              description: Whether this is a root folder
                              example: false
                            status:
                              type: string
                              description: The status of the folder or program
                              nullable: true
                              example: null
                            parent_id:
                              type: string
                              description: The ID of the parent folder
                              example: '48'
                            folder_type:
                              type: string
                              description: The type of the folder (Folder or Program)
                              example: Program
        401:
          description: Unauthenticated
        403:
          description: Unauthorized
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          description: The type of the asset
                          example: email
                        id:
                          type: string
                          description: The ID of the asset
                          example: 66154fd1e9704
                  messages:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                          description: The error message
                          example: Invalid Custom Field
                        type:
                          type: string
                          description: The type of the error
                          example: invalid
                        level:
                          type: string
                          description: The severity level of the error
                          example: error
                        email_id:
                          type: string
                          description: The ID of the email
                          example: 66154fd1e9704