Context4
Technical documentation

HTTP catalog and provider calls.

Context4 provider HTTP catalog: discover operations, inspect parameter schemas and call endpoints through connected accounts.

Generated from the public Context4 OpenAPI. Authenticate with Authorization: Bearer and an API key. General rules: API. Full contract: OpenAPI JSON. In the JSON below, $ref points to a named schema in the Schemas section.

listConnectorEndpoints

GET /v1/connectors/{connectorId}/endpoints

Deployment URL: https://ctx4.me/v1/connectors/{connectorId}/endpoints. Replace parameters in braces with actual IDs from the API.

List a connector's raw API endpoints

Capability: tools:read.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}
qqueryno{"type":"string","minLength":1,"maxLength":120}
groupqueryno{"type":"string","minLength":1,"maxLength":64}
include_removedqueryno{"type":"string","enum":["true","false"],"description":"true lists the endpoints a lock regeneration removed (with removed_at) beside the live ones"} true lists the endpoints a lock regeneration removed (with removed_at) beside the live ones
cursorqueryno{"type":"string","minLength":1,"maxLength":400,"pattern":"^[A-Za-z0-9_-]+$","description":"Opaque pagination cursor from a previous response"} Opaque pagination cursor from a previous response
limitqueryno{"type":"integer","minimum":1,"maximum":100,"description":"Page size (1-100, default 20)"} Page size (1-100, default 20)

Responses and errors

HTTPMeaningFormat and schema
200Endpoints ordered by id, without schemas, each with its descriptor; q matches id, path or summary, group narrows to one vendor group, include_removed=true lists tombstoned endpoints tooapplication/json EndpointListResponse
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

getConnectorEndpoint

GET /v1/connectors/{connectorId}/endpoint

Deployment URL: https://ctx4.me/v1/connectors/{connectorId}/endpoint. Replace parameters in braces with actual IDs from the API.

Get one raw endpoint, by method and vendor path, with its JSON schemas

Capability: tools:read.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}
methodqueryyes{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","HEAD"]}
pathqueryyes{"type":"string","minLength":1,"maxLength":500,"pattern":"^\/","example":"/api/v4/leads/{id}"}

Responses and errors

HTTPMeaningFormat and schema
200Endpoint detail with input and output schemas and its paging descriptorapplication/json EndpointDetail
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing)application/problem+json Problem
404Problem (not_found). No such endpoint — or a lock regeneration removed it, in which case the problem detail names when, and its last descriptor digest when one was recorded (include_removed=true on the list still shows it)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

getConnectorOpenApi

GET /v1/connectors/{connectorId}/openapi.json

Deployment URL: https://ctx4.me/v1/connectors/{connectorId}/openapi.json. Replace parameters in braces with actual IDs from the API.

The connector's mirror call surface as one OpenAPI 3.1 document

Capability: tools:read.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}

Responses and errors

HTTPMeaningFormat and schema
200OpenAPI 3.1: every live catalogued endpoint as an operation on /v1/api/{connectorId} + the vendor path, with the bearer security scheme and the Context4-Connection-Id header on each; deterministic for an unchanged catalogue, and ETag carries the document's sha256application/json ConnectorOpenApiDocument
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing)application/problem+json Problem
404Problem (not_found). No connector of that id has catalogued endpointsapplication/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

searchEndpoints

POST /v1/endpoints/search

Deployment URL: https://ctx4.me/v1/endpoints/search. Replace parameters in braces with actual IDs from the API.

Search raw endpoints across the connectors the caller has a usable connection for

Capability: connections:read.

The contract defines no additional parameters.

Request body

Required. EndpointSearchRequest

Data
{
  "required": true,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EndpointSearchRequest"
      }
    }
  }
}

Responses and errors

HTTPMeaningFormat and schema
200Hits ranked by relevance within the scope — the connectors of the workspace's active connections (or of the connections the named borrowers lend), narrowed by connectors; an empty scope answers no items and no error. scope.index names the index that answered (ratel, or ilike while the registry is unbuilt or disabled)application/json EndpointSearchResponse
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

callConnectorApiGet

GET /v1/api/{connectorId}/{vendorPath}

Deployment URL: https://ctx4.me/v1/api/{connectorId}/{vendorPath}. Replace parameters in braces with actual IDs from the API.

GET a catalogued vendor endpoint through a connection (mirror path)

Capability: executions:write.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}
vendorPathpathyes{"type":"string","minLength":1,"maxLength":2000,"description":"The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter","example":"api/v4/leads/7"} The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter
Context4-Connection-Idheaderyes{"type":"string","format":"uuid","description":"The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)","example":"3f1c2a9e-8b4d-4c55-9a0e-6d2f1b7c8e90"} The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)

Responses and errors

HTTPMeaningFormat and schema
200The vendor's response, status and body unchanged, with Context4-Execution-Id and Context4-Origin: provider; a platform refusal is a problem document with Context4-Origin: platformThe contract does not define a body
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing, forbidden)application/problem+json Problem
404Problem (not_found)application/problem+json Problem
409Problem (conflict)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

callConnectorApiPost

POST /v1/api/{connectorId}/{vendorPath}

Deployment URL: https://ctx4.me/v1/api/{connectorId}/{vendorPath}. Replace parameters in braces with actual IDs from the API.

POST a catalogued vendor endpoint through a connection (mirror path)

Capability: executions:write.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}
vendorPathpathyes{"type":"string","minLength":1,"maxLength":2000,"description":"The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter","example":"api/v4/leads/7"} The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter
Context4-Connection-Idheaderyes{"type":"string","format":"uuid","description":"The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)","example":"3f1c2a9e-8b4d-4c55-9a0e-6d2f1b7c8e90"} The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)

Request body

Optional. ConnectorApiBody

Data
{
  "required": false,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/ConnectorApiBody"
      }
    }
  }
}

Responses and errors

HTTPMeaningFormat and schema
200The vendor's response, status and body unchanged, with Context4-Execution-Id and Context4-Origin: provider; a platform refusal is a problem document with Context4-Origin: platformThe contract does not define a body
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing, forbidden)application/problem+json Problem
404Problem (not_found)application/problem+json Problem
409Problem (conflict)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

callConnectorApiPut

PUT /v1/api/{connectorId}/{vendorPath}

Deployment URL: https://ctx4.me/v1/api/{connectorId}/{vendorPath}. Replace parameters in braces with actual IDs from the API.

PUT a catalogued vendor endpoint through a connection (mirror path)

Capability: executions:write.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}
vendorPathpathyes{"type":"string","minLength":1,"maxLength":2000,"description":"The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter","example":"api/v4/leads/7"} The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter
Context4-Connection-Idheaderyes{"type":"string","format":"uuid","description":"The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)","example":"3f1c2a9e-8b4d-4c55-9a0e-6d2f1b7c8e90"} The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)

Request body

Optional. ConnectorApiBody

Data
{
  "required": false,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/ConnectorApiBody"
      }
    }
  }
}

Responses and errors

HTTPMeaningFormat and schema
200The vendor's response, status and body unchanged, with Context4-Execution-Id and Context4-Origin: provider; a platform refusal is a problem document with Context4-Origin: platformThe contract does not define a body
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing, forbidden)application/problem+json Problem
404Problem (not_found)application/problem+json Problem
409Problem (conflict)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

callConnectorApiPatch

PATCH /v1/api/{connectorId}/{vendorPath}

Deployment URL: https://ctx4.me/v1/api/{connectorId}/{vendorPath}. Replace parameters in braces with actual IDs from the API.

PATCH a catalogued vendor endpoint through a connection (mirror path)

Capability: executions:write.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}
vendorPathpathyes{"type":"string","minLength":1,"maxLength":2000,"description":"The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter","example":"api/v4/leads/7"} The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter
Context4-Connection-Idheaderyes{"type":"string","format":"uuid","description":"The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)","example":"3f1c2a9e-8b4d-4c55-9a0e-6d2f1b7c8e90"} The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)

Request body

Optional. ConnectorApiBody

Data
{
  "required": false,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/ConnectorApiBody"
      }
    }
  }
}

Responses and errors

HTTPMeaningFormat and schema
200The vendor's response, status and body unchanged, with Context4-Execution-Id and Context4-Origin: provider; a platform refusal is a problem document with Context4-Origin: platformThe contract does not define a body
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing, forbidden)application/problem+json Problem
404Problem (not_found)application/problem+json Problem
409Problem (conflict)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}

callConnectorApiDelete

DELETE /v1/api/{connectorId}/{vendorPath}

Deployment URL: https://ctx4.me/v1/api/{connectorId}/{vendorPath}. Replace parameters in braces with actual IDs from the API.

DELETE a catalogued vendor endpoint through a connection (mirror path)

Capability: executions:write.

Parameters

NameLocationRequiredType and constraints
connectorIdpathyes{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{1,78}$","example":"bitrix24"}
vendorPathpathyes{"type":"string","minLength":1,"maxLength":2000,"description":"The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter","example":"api/v4/leads/7"} The vendor path after /v1/api/{connectorId}/, exactly as the vendor documents it. Its slashes may be sent literally (api/v4/leads/7) or, as a generated client encodes one path parameter, percent-encoded as one segment (api%2Fv4%2Fleads%2F7). A / that belongs inside one vendor parameter (a git ref heads/main) is %2F in the literal form (git/ref/heads%2Fmain) and %252F in the encoded one; it reaches the vendor as %2F inside that segment, and only where the endpoint's template has a parameter
Context4-Connection-Idheaderyes{"type":"string","format":"uuid","description":"The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)","example":"3f1c2a9e-8b4d-4c55-9a0e-6d2f1b7c8e90"} The connection the vendor call runs on; it must belong to connectorId (another connector's connection is 409)

Request body

Optional. ConnectorApiBody

Data
{
  "required": false,
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/ConnectorApiBody"
      }
    }
  }
}

Responses and errors

HTTPMeaningFormat and schema
200The vendor's response, status and body unchanged, with Context4-Execution-Id and Context4-Origin: provider; a platform refusal is a problem document with Context4-Origin: platformThe contract does not define a body
400Problem (validation_failed)application/problem+json Problem
401Problem (authentication_required, invalid_api_key, api_key_expired, api_key_revoked)application/problem+json Problem
403Problem (capability_missing, forbidden)application/problem+json Problem
404Problem (not_found)application/problem+json Problem
409Problem (conflict)application/problem+json Problem
429Problem (rate_limited)application/problem+json Problem
500Problem (internal)application/problem+json Problem
503Problem (service_unavailable)application/problem+json Problem

Successful response headers:

Data
{
  "X-Request-Id": {
    "description": "Correlation id echoed on every response",
    "schema": {
      "type": "string"
    }
  },
  "RateLimit-Limit": {
    "description": "Per-key request limit for the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Requests remaining in the current window",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Seconds until the current window resets",
    "schema": {
      "type": "integer"
    }
  }
}