Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi" : "3.0.1",
"info" : {
"title" : "ENHANCE API",
"description" : "Enhance is an API to find a person or organization in the Knowledge Graph using partial data",
"termsOfService" : "https://www.diffbot.com/terms/",
"contact" : {
"email" : "support@diffbot.com"
},
"version" : "3.0.0"
},
"servers" : [ {
"url" : "https://kg.diffbot.com",
"description" : "Diffbot KG endpoint"
} ],
"tags" : [ {
"name" : "Combine",
"description" : "Enhance both a person and the employer data"
}, {
"name" : "Enhance",
"description" : "Enhance single records synchronously"
}, {
"name" : "Bulk Enhance",
"description" : "Enhance multiple records asynchronously"
} ],
"paths" : {
"/kg/v3/enhance" : {
"get" : {
"tags" : [ "Enhance" ],
"summary" : "Enhance",
"description" : "Enrich a person or organization record with partial data input",
"operationId" : "enhance",
"parameters" : [ {
"name" : "type",
"in" : "query",
"description" : "Diffbot entity type",
"required" : true,
"schema" : {
"type" : "string",
"enum" : [ "Person", "Organization" ]
}
}, {
"name" : "id",
"in" : "query",
"description" : "DiffbotId of entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "name",
"in" : "query",
"description" : "Name of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}, {
"name" : "url",
"in" : "query",
"description" : "Origin or homepage URI of entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}, {
"name" : "phone",
"in" : "query",
"description" : "Phone of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "email",
"in" : "query",
"description" : "Email of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}, {
"name" : "employer",
"in" : "query",
"description" : "Employer of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "string"
}
}, {
"name" : "title",
"in" : "query",
"description" : "Title of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "string"
}
}, {
"name" : "school",
"in" : "query",
"description" : "School of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "string"
}
}, {
"name" : "location",
"in" : "query",
"description" : "Location of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "description",
"in" : "query",
"description" : "Description of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "ip",
"in" : "query",
"description" : "IP address of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "customId",
"in" : "query",
"description" : "User defined ID for correlation",
"schema" : {
"type" : "string"
}
}, {
"name" : "size",
"in" : "query",
"description" : "Maximum number of results to return",
"schema" : {
"type" : "integer",
"format" : "int32",
"default" : 1
}
}, {
"name" : "threshold",
"in" : "query",
"description" : "Enhance similarity threshold",
"schema" : {
"type" : "number",
"format" : "double"
}
}, {
"name" : "refresh",
"in" : "query",
"description" : "`refresh=true` indicates that Diffbot will attempt to recrawl all the origins of the identified entity and reconstruct the returned entity from this refreshed data.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "search",
"in" : "query",
"description" : "`search=true` indicates that Diffbot will attempt to search the web for origins for the search query and merge relevant results with whats found in the KG.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "nonCanonicalFacts",
"in" : "query",
"description" : "`nonCanonicalFacts=true` returns non-canonical facts.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "jsonmode",
"in" : "query",
"description" : "`jsonmode=extended` returns origin information for facts.",
"schema" : {
"type" : "string",
"enum" : [ "extended" ]
}
}, {
"name" : "filter",
"in" : "query",
"description" : "Semi-colon separated path filter to filter response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax.",
"schema" : {
"type" : "string"
}
}, {
"name" : "filterExclude",
"in" : "query",
"description" : "Semi-colon separated path filter to filter and exclude data from response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax.",
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Enhanced entity",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/EnhanceResponse"
}
}
}
},
"400" : {
"description" : "Error parsing request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"401" : {
"description" : "Token not specified or other client errors",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AuthError"
}
}
}
},
"429" : {
"description" : "Insufficient credits",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"500" : {
"description" : "Internal Server Error",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
}
},
"security" : [ {
"tokenscheme" : [ ]
} ]
},
"post" : {
"tags" : [ "Enhance" ],
"summary" : "Enhance",
"description" : "Enrich a person or organization record with partial data input (POST option)",
"operationId" : "enhancePost",
"requestBody" : {
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/EnhancePostRequest"
}
}
}
},
"responses" : {
"200" : {
"description" : "Enhanced entity",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/EnhanceResponse"
}
}
}
},
"400" : {
"description" : "Error parsing request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"401" : {
"description" : "Token not specified or other client errors",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AuthError"
}
}
}
},
"429" : {
"description" : "Insufficient credits",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"500" : {
"description" : "Internal Server Error",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
}
},
"security" : [ {
"tokenscheme" : [ ]
} ]
}
},
"/kg/v3/enhance/combine" : {
"get" : {
"tags" : [ "Combine", "Enhance" ],
"summary" : "Combine",
"description" : "Enrich a person record and return both person and current employer data",
"operationId" : "combine",
"parameters" : [ {
"name" : "type",
"in" : "query",
"description" : "Diffbot entity type",
"required" : true,
"schema" : {
"type" : "string",
"enum" : [ "Person" ]
}
}, {
"name" : "name",
"in" : "query",
"description" : "Name of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}, {
"name" : "url",
"in" : "query",
"description" : "Origin or homepage URI of entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}, {
"name" : "phone",
"in" : "query",
"description" : "Phone of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "email",
"in" : "query",
"description" : "Email of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "string"
}
}, {
"name" : "employer",
"in" : "query",
"description" : "Employer of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "string"
}
}, {
"name" : "title",
"in" : "query",
"description" : "Title of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "string"
}
}, {
"name" : "school",
"in" : "query",
"description" : "School of the entity to enhance. Parameter can be used only with type `Person`",
"schema" : {
"type" : "string"
}
}, {
"name" : "location",
"in" : "query",
"description" : "Location of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "ip",
"in" : "query",
"description" : "IP address of the entity to enhance. Parameter can be used with types `Person` and `Organization`",
"schema" : {
"type" : "string"
}
}, {
"name" : "customId",
"in" : "query",
"description" : "User defined ID for correlation",
"schema" : {
"type" : "string"
}
}, {
"name" : "threshold",
"in" : "query",
"description" : "Enhance similarity threshold",
"schema" : {
"type" : "number",
"format" : "double"
}
}, {
"name" : "refresh",
"in" : "query",
"description" : "`refresh=true` indicates that Diffbot will attempt to recrawl all the origins of the identified entity and reconstruct the returned entity from this refreshed data.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "search",
"in" : "query",
"description" : "`search=true` indicates that Diffbot will attempt to search the web for origins for the search query and merge relevant results with whats found in the KG.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "nonCanonicalFacts",
"in" : "query",
"description" : "`nonCanonicalFacts=true` returns non-canonical facts.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "jsonmode",
"in" : "query",
"description" : "`jsonmode=extended` returns origin information for facts.",
"schema" : {
"type" : "string",
"enum" : [ "extended" ]
}
}, {
"name" : "filter",
"in" : "query",
"description" : "Semi-colon separated path filter to filter response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax.",
"schema" : {
"type" : "string"
}
}, {
"name" : "filterExclude",
"in" : "query",
"description" : "Semi-colon separated path filter to filter and exclude data from response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax.",
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Enhanced entity",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/EnhanceResponse"
}
}
}
},
"400" : {
"description" : "Error parsing request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"401" : {
"description" : "Token not specified or other client errors",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AuthError"
}
}
}
},
"429" : {
"description" : "Insufficient credits",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"500" : {
"description" : "Internal Server Error",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
}
},
"security" : [ {
"tokenscheme" : [ ]
} ]
}
},
"/kg/v3/enhance/bulk" : {
"post" : {
"tags" : [ "Bulk Enhance" ],
"summary" : "Create a Bulkjob",
"description" : "Enhance multiple records in bulk asynchronously",
"operationId" : "submitBulkjob",
"parameters" : [ {
"name" : "name",
"in" : "query",
"description" : "Enhance Bulkjob name",
"schema" : {
"type" : "string"
}
}, {
"name" : "size",
"in" : "query",
"description" : "Maximum number of results to return",
"schema" : {
"type" : "integer",
"format" : "int32",
"default" : 1
}
}, {
"name" : "threshold",
"in" : "query",
"description" : "Enhance similarity threshold",
"schema" : {
"type" : "number",
"format" : "double"
}
}, {
"name" : "refresh",
"in" : "query",
"description" : "`refresh=true` indicates that Diffbot will attempt to recrawl all the origins of the identified entity and reconstruct the returned entity from this refreshed data.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "search",
"in" : "query",
"description" : "`search=true` indicates that Diffbot will attempt to search the web for origins for the search query and merge relevant results with whats found in the KG.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "nonCanonicalFacts",
"in" : "query",
"description" : "`nonCanonicalFacts=true` returns non-canonical facts.",
"schema" : {
"type" : "boolean",
"default" : false
}
}, {
"name" : "jsonmode",
"in" : "query",
"description" : "`jsonmode=extended` returns origin information for facts.",
"schema" : {
"type" : "string",
"enum" : [ "extended" ]
}
}, {
"name" : "webhookurl",
"in" : "query",
"description" : "Webhook URL",
"schema" : {
"type" : "string"
}
} ],
"requestBody" : {
"description" : "Bulk query payload",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"oneOf" : [ {
"$ref" : "#/components/schemas/OrganizationRequest"
}, {
"$ref" : "#/components/schemas/PersonRequest"
}, {
"$ref" : "#/components/schemas/IdRequestEntity"
} ]
}
}
}
}
},
"responses" : {
"202" : {
"description" : "Acknowledgement with bulkjobId",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/BulkjobAccepted"
}
}
}
},
"400" : {
"description" : "Error parsing request",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"401" : {
"description" : "Token not specified or other client errors",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AuthError"
}
}
}
},
"429" : {
"description" : "Insufficient credits",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"500" : {
"description" : "Internal Server Error",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
}
},
"security" : [ {
"tokenscheme" : [ ]
} ],
"x-api-order" : "0"
}
},
"/kg/v3/enhance/bulk/status" : {
"get" : {
"tags" : [ "Bulk Enhance" ],
"summary" : "List Bulkjobs for Token",
"description" : "Poll the status of all Enhance Bulkjobs for a token",
"operationId" : "bulkjobStatusForToken",
"responses" : {
"200" : {
"description" : "Success status",
"content" : {
"application/json" : {
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/BulkjobStatus"
}
}
}
}
},
"401" : {
"description" : "Token not specified or other client errors",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AuthError"
}
}
}
},
"500" : {
"description" : "Internal Server Error",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
}
},
"security" : [ {
"tokenscheme" : [ ]
} ],
"x-api-order" : "1"
}
},
"/kg/v3/enhance/bulk/{bulkjobId}/status" : {
"get" : {
"tags" : [ "Bulk Enhance" ],
"summary" : "Poll bulkjob status",
"description" : "Poll the status of an Enhance Bulkjob",
"operationId" : "bulkjobStatus",
"parameters" : [ {
"name" : "bulkjobId",
"in" : "path",
"description" : "Enhance Bulkjob ID",
"required" : true,
"schema" : {
"type" : "string"
}
} ],
"responses" : {
"200" : {
"description" : "Bulkjob complete",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/BulkjobStatusResponse"
}
}
}
},
"201" : {
"description" : "Bulkjob is still executing or is stopped",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/BulkjobStatusResponse"
}
}
}
},
"401" : {
"description" : "Token not specified or other client errors",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AuthError"
}
}
}
},
"404" : {
"description" : "Bulkjob not found",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"500" : {
"description" : "Internal Server Error",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
}
},
"security" : [ {
"tokenscheme" : [ ]
} ],
"x-api-order" : "2"
}
},
"/kg/v3/enhance/bulk/{bulkjobId}" : {
"get" : {
"tags" : [ "Bulk Enhance" ],
"summary" : "Download Results of Bulkjob",
"description" : "Download the result of a completed Enhance Bulkjob",
"operationId" : "bulkjobResultGet",
"parameters" : [ {
"name" : "bulkjobId",
"in" : "path",
"description" : "Enhance Bulkjob ID",
"required" : true,
"schema" : {
"type" : "string"
}
}, {
"name" : "head",
"in" : "query",
"description" : "Return first n results",
"schema" : {
"type" : "integer",
"format" : "int32",
"default" : 0
}
}, {
"name" : "from",
"in" : "query",
"description" : "1-based index of the first result to return (1 = first result).",
"schema" : {
"type" : "integer",
"format" : "int32",
"default" : 0
}
}, {
"name" : "size",
"in" : "query",
"description" : "Maximum number of results to return starting from the 'from' position.",
"schema" : {
"type" : "integer",
"format" : "int32",
"default" : -1
}
}, {
"name" : "onlyMatches",
"in" : "query",
"description" : "Return only records that have a match",
"schema" : {
"type" : "string",
"default" : "false",
"enum" : [ "true", "false" ]
}
}, {
"name" : "format",
"in" : "query",
"description" : "Export format",
"schema" : {
"type" : "string",
"enum" : [ "json", "jsonl", "csv", "xls", "xlsx" ]
}
}, {
"name" : "exportspec",
"in" : "query",
"description" : "The spec defines the columns to export. This is applicable for csv, xls and xslx formats.\n\nExport spec specifies how to export the entity JSON to a csv. A simple export spec looks like `name;summary`. To specify more complex export spec, including specifying how many of a list of `industries` to return, or the ideal `employment` record, see [Exporting Columnar Format](https://docs.diffbot.com/reference/exporting-csv) and [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields).",
"schema" : {
"type" : "string"
}
}, {
"name" : "exportfile",
"in" : "query",
"description" : "File name of the export file",
"schema" : {
"type" : "string"
}
}, {
"name" : "exportseparator",
"in" : "query",
"description" : "Separator for multi-value fields when exporting columnar results",
"schema" : {
"type" : "string"
}
}, {
"name" : "exportquery",
"in" : "query",
"description" : "Prefixes the enhance query parameters to the CSV export result",
"schema" : {
"type" : "string",
"default" : "false",
"enum" : [ "true", "false" ]
}
}, {
"name" : "filter",
"in" : "query",
"description" : "Semi-colon separated path filter to filter response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax.",
"schema" : {
"type" : "string"
}
}, {
"name" : "filterExclude",
"in" : "query",
"description" : "Semi-colon separated path filter to filter and exclude data from response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax.",
"schema" : {
"type" : "string"
}
}, {
"name" : "wait",
"in" : "query",
"description" : "Seconds to wait for bulkjob results to export. Results will continue to export in the background. To only trigger an export, use 0.",
"schema" : {
"type" : "integer",
"format" : "int32",
"default" : 120
}
} ],
"responses" : {
"200" : {
"description" : "Result data. Depends on format (default is json lines).",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/JsonNode"
}
},
"application/json-lines" : {
"schema" : {
"type" : "object"
}
},
"text/csv" : {
"schema" : {
"type" : "object"
}
},
"application/ms-excel" : {
"schema" : {
"type" : "object"
}
},
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : {
"schema" : {
"type" : "object"
}
}
}
},
"201" : {
"description" : "Bulkjob or result export is still executing or is stopped",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"400" : {
"description" : "Invalid bulkjobId",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"401" : {
"description" : "Token not specified or other client errors",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/AuthError"
}
}
}
},
"404" : {
"description" : "Bulkjob not found",
"content" : {
"application/json" : {
"schema" : {
"$ref" : "#/components/schemas/StatusResponseError"
}
}
}
},
"500" : {
"description" : "Internal Server Error",
"content" : {
"application/json" : {
# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/diffbot/refs/heads/main/openapi/_original/diffbot-enhance-openapi.json