> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.aventure.vc/api-reference/news-thumbnail/get-news-thumbnail/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.aventure.vc/_mcp/server. # Get news thumbnail GET https://api.aventure.vc/v1/news/{newsId}/thumbnail Returns the article's attached thumbnail with its stored provenance; an empty slot returns 404, so read presence from `core.newsImageThumbnail` on `news get`. Reference: https://docs.aventure.vc/api-reference/news-thumbnail/get-news-thumbnail ## Request ### Path parameters - `newsId` (integer, required) — Exact positive news article id ## Response ### 200 OK - `cdnUrl` (string, required) — Resolved API CDN URL - `mediaType` (enum, required) — Target media domain - Allowed values: `ENTITY`, `PERSON`, `NEWS`, `BLOG` - `path` (string, required) — Attached managed storage path; never an external image URL - `accuracy` (LogoAccuracy, optional, nullable) — Entity logo writes only: the brand-match verdict the write's gate computed on these bytes; absent on reads, photos, thumbnails, and brand-match overrides. - `firstUploadedAt` (datetime, optional, nullable) — Earliest recorded write timestamp for this media asset slot from res_provenance_event (when this entity/person/news first received any image in this slot). - `provenance` (DatasourceSourceMetadata, optional, nullable) — Latest write source for this media asset slot from res_provenance_event. `changedAt` is the last-modified timestamp of the current attached file. - `targetId` (string, optional, nullable) — Attached entity/person/news target id, when known ## Errors ### 400 Bad Request Error Bad Request - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing` - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 404 Not Found Error Not Found - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing` - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 406 Not Acceptable Error Not Acceptable - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing` - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 422 Unprocessable Entity Error Unprocessable Content - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing` - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 429 Too Many Requests Error Too Many Requests - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing` - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 500 Internal Server Error Internal Server Error - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing` - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 503 Service Unavailable Error Service Unavailable - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (enum, optional) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - Allowed values: `not_authorized`, `rateLimited`, `rate_limited`, `subscription_required`, `subscription_canceled`, `subscription_past_due`, `subscription_paused`, `billing_allowance_exhausted`, `billing_additional_usage_cap_reached`, `origin_detail_capacity`, `origin_detail_shutdown`, `suspectedShellStrip`, `suspected_shell_strip`, `url_surface_misclassification`, `JOBRUNR_DISABLED`, `jobrunr_disabled`, `JOBRUNR_STORAGE_UNAVAILABLE`, `jobrunr_storage_unavailable`, `rbac_lookup_unavailable`, `GEOCODE_PROVIDER_ERROR`, `geocode_provider_error`, `image_blocklist_match`, `image_monochrome`, `image_too_small`, `image_wrong_aspect`, `image_monogram`, `image_unreadable`, `image_processing_error`, `image_brand_mismatch`, `web_crawl_fetch_failed`, `primary_website_missing`, `news_rss_feed_fetch_failed`, `news_rss_article_fetch_failed`, `r2_fetch_failed`, `r2_delete_failed`, `r2_upload_failed`, `source_document_body_unavailable`, `source_document_capture_limit_exceeded`, `news_similarity_embedding_unavailable`, `search_provider_not_configured`, `search_provider_error`, `sec_edgar_fetch_failed`, `github_fetch_failed`, `INFERENCE_PROVIDER_ERROR`, `inference_provider_error`, `INFERENCE_PROVIDER_RESPONSE_EMPTY`, `inference_provider_response_empty`, `INFERENCE_PROVIDER_INVALID_JSON`, `inference_provider_invalid_json`, `INFERENCE_PROFILES_MISSING`, `inference_profiles_missing`, `INFERENCE_PROFILE_API_KEY_MISSING`, `inference_profile_api_key_missing` - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ## Types ### LogoAccuracy Read-only assessment of whether a stored logo/photo depicts the target's own brand, decided from visible features of the stored mark versus the target's own reference marks - `confidence` (enum, required) — Confidence in the outcome - Allowed values: `HIGH`, `MEDIUM`, `LOW` - `method` (enum, required) — How the outcome was reached - Allowed values: `PERCEPTUAL_HASH`, `VISION`, `OPERATOR_REVIEW`, `REFERENCE_UNAVAILABLE` - `outcome` (enum, required) — Whether the candidate mark matches the target's own brand - Allowed values: `MATCH`, `MISMATCH`, `INSUFFICIENT` - `reference` (list of LogoAccuracyReference, required) — Reference marks fetched from the target's own surfaces, each with its perceptual-hash distance to the candidate. The deciding deterministic distance is the smallest entry - `approval` (DatasourceSourceMetadata, optional, nullable) — Confirmed media-slot provenance that made this a match without a model/reference comparison; null for deterministic hash, vision, and insufficient outcomes - `candidateObserved` (string, optional, nullable) — Literal visible description of the candidate mark, when assessed by vision - `referenceObserved` (string, optional, nullable) — Literal visible description of the reference mark, when assessed by vision - `sharedFeature` (string, optional, nullable) — The specific visible feature shared by candidate and reference that supports a match (shared name text, symbol, or distinctive palette); null when not a match ### DatasourceSourceMetadata Grouped source/provenance metadata for private v1 response fields - `changedAt` (datetime, optional, nullable) - `dataSourceUpdatedAt` (datetime, optional, nullable) - `detail` (string, optional, nullable) - `kind` (string, optional, nullable) - `pendingApproval` (integer, optional, nullable) - `sourceId` (string, optional, nullable) - `status` (string, optional, nullable) ### CurrentSlugOwner Current slug owner - `id` (string, required) - `isHidden` (boolean, required) - `resourceType` (enum, required) — Resource type whose slug is being changed - Allowed values: `entity`, `person`, `news`, `blog`, `content` - `showOnSitemap` (boolean, required) - `slug` (string, required) - `deletedAt` (datetime, optional, nullable) - `nameBrand` (string, optional, nullable) ### DomainConflictDetails Polymorphic envelope for RFC 9457 ProblemDetail.details on HTTP 409 responses. The concrete variant depends on the conflict kind: URL ownership collisions return UrlDuplicateConflict; ambiguous strict URL lookups return StrictUrlLookupConflict; create-time duplicate review gates return DuplicateCreateReview; classification writes that touch an inactive tag bucket return ClassificationInactiveTagDetails; news publication+URL uniqueness violations return NewsSourceUrlConflict. Inspect ProblemDetail.code/type and the field set present on details to identify the variant. ### RedirectSlugPath Redirect slug path - `oldUrl` (string, required) - `newUrl` (string, optional, nullable) - `targetCurrentSlug` (string, optional, nullable) - `targetId` (string, optional, nullable) - `targetResourceType` (enum, optional, nullable) — Resource type whose slug is being changed - Allowed values: `entity`, `person`, `news`, `blog`, `content` ### ProblemResolution Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `action` (enum, required) — Next action category for the client or agent. - Allowed values: `setField`, `setParameter`, `removeParameter`, `useEndpoint`, `reviewCandidates`, `authenticate` - `acceptedValue` (list of string, optional, nullable) — Accepted values for the field or parameter, when enumerable. - `endpoint` (string, optional, nullable) — Endpoint to call for the next action, when applicable. - `fieldPath` (string, optional, nullable) — Request-body field path that needs attention, when applicable. - `parameter` (string, optional, nullable) — Query parameter that needs attention, when applicable. - `retryable` (boolean, optional, nullable) — Whether the same logical request can be retried after the next action. ### LogoAccuracyReference A reference mark from the target's own surface and its distance to the candidate - `hammingDistance` (integer, required) — Perceptual-hash distance between the candidate and this reference - `url` (string, required) — Direct URL of the reference mark fetched from the target's surface ### UrlDuplicateConflict Typed extension on ProblemDetail.details for HTTP 409 when a create/update attempts to set a URL with urlType=website (or another exclusive urlType) that is already a current URL on a different entity or person. The existingJoin list names every current owner of the normalized URL; resolve by demoting the existing owner (isCurrent=false, isPrimary=false) before promoting the new owner. - `existingJoin` (list of UrlDuplicateJoin, required) — Every current owner that already holds the normalized URL with this urlType. Non-empty when this conflict is emitted. - `fragmentIgnored` (boolean, required) — True when URL fragment differences were ignored during duplicate matching (i.e., the conflict ignores everything after '#'). - `guidance` (string, required) — Human-readable guidance on how to resolve the conflict. Defaults to the standard inspect-then-demote/promote sequence. - `requestedOwner` (EntityPersonOwner, required) — Owner the caller attempted to attach the URL to. - `url` (string, required) — Raw URL as submitted by the caller (pre-normalization). - `urlType` (string, required) — URL type submitted by the caller (e.g., 'website', 'twitter'). The conflict applies only within this urlType. - `normalizedUrl` (string, optional, nullable) — Normalized URL match key used for duplicate detection. Null when normalization could not produce a stable key (e.g., malformed input). ### StrictUrlLookupConflict Typed extension on ProblemDetail.details for HTTP 409 when a strict URL lookup (GET /v1/entities/lookup-exact?url=...) resolves to more than one current owner. The candidate lists return every current owner that matches the normalized URL key; the caller must add disambiguating signals (urlType, typeRecord, slug) to resolve to a single owner. - `candidateEntityId` (list of string, required) — Every entity id that currently owns the normalized URL. May be empty when the conflict is between persons; combined with candidatePersonId always > 1. - `candidatePersonId` (list of string, required) — Every person id that currently owns the normalized URL. May be empty when the conflict is between entities; combined with candidateEntityId always > 1. - `hint` (string, required) — Human-readable hint describing which disambiguating query parameters to add. - `url` (string, required) — Raw URL the caller queried. - `normalizedUrl` (string, optional, nullable) — Normalized URL match key the lookup resolved against. Null when normalization could not produce a stable key. - `urlType` (string, optional, nullable) — URL type the caller specified, or null if the lookup did not constrain by urlType. ### DuplicateCreateReview Candidate-review conflict details returned in ProblemDetail.details for create gates and deterministic lookup ambiguity. The returned candidates are the decision surface: update the matching candidate, create with duplicate override only when every candidate is distinct from the source-backed target, or block when identity is unresolved. score and threshold rank review priority; they are not proof that the requested record is absent. - `threshold` (integer, required) — Review threshold used by duplicate scoring. Scores below this value can still be useful candidate context; this value does not prove absence or authorize create. - `candidate` (list of SearchDuplicateCandidateScore, optional, nullable) — Entity/person candidates returned by lookup or create duplicate review. If a candidate is the requested record, read/update that candidate by id. Create with duplicate override only after every candidate is reviewed as distinct. - `newsCandidate` (list of NewsCandidateScore, optional, nullable) — News candidates returned by lookup or create duplicate review. If a candidate is the requested article, read/update that article by id. Otherwise block until source evidence proves a distinct article. - `overridePath` (string, optional, nullable) — Create endpoint to retry only after reviewing the returned candidates and supplying overrideGate=duplicate and overrideReason as query parameters. Null for detail lookup ambiguity, where the next action is review/update/block. ### ClassificationInactiveTagDetails ProblemDetail.details for HTTP 409 when a classification value exists but is inactive. - `availableOverrides` (list of enum, required) — Allowed inactiveTagOverride values for this conflict - Allowed values: `REACTIVATE`, `ATTACH_INACTIVE` - `slug` (string, required) — Existing dormant value slug or lookup key - `tagId` (integer, required) — Existing tag id in res_type_ref ### NewsSourceUrlConflict Typed extension on ProblemDetail.details for HTTP 409 when a news mutation's publication + newsUrlOriginal pair already belongs to another article. The returned fields identify the existing article so the caller can read/update it instead of creating a duplicate. - `conflictingArticleId` (integer, required) — Existing article id (NewsId.value) that already owns this publication + URL pair. - `conflictingArticleSlug` (string, required) — Existing article slug, or empty string when the existing article has no slug. Use with GET /v1/news/lookup?slug= to fetch the conflicting article. - `conflictingArticleTitle` (string, required) — Existing article title for human-readable diagnostics. ### UrlDuplicateJoin URL ownership join row identifying which entity or person currently owns a normalized URL. - `owner` (EntityPersonOwner, required) — Owner of the URL: either entityId or personId is populated depending on the owner kind. Use the populated id to read or update the owner's URL. - `urlId` (integer, required) — Internal URL row id (res_weburl.id) — opaque to API clients. ### EntityPersonOwner Exactly one of entityId or personId is set; ids only, no name fields. Resolve display names with GET /v1/entities/detail or GET /v1/people/\{personId}. - `entityId` (string, optional, nullable) — Owning entity id; set only when personId is absent. - `personId` (string, optional, nullable) — Owning person id; set only when entityId is absent. ### SearchDuplicateCandidateScore Duplicate candidate scoring result. Use id/name/slug/typeRecord/reason to decide whether the candidate is the requested record. score ranks review priority; it does not prove absence. - `id` (string, required) — Candidate id to read or update when this candidate is the requested record. - `reason` (list of string, required) — Match reasons such as name-exact, slug-exact, url-match, url-current, url-type, or precomputed-similarity. url-match proves the supplied URL/domain matched; url-current additionally proves the candidate still holds that address today, so a candidate with url-match but no url-current matched only through a URL it no longer uses, such as an acquisition redirect. url-type only means the candidate has the same URL category and is review context, not URL identity evidence. - `score` (integer, required) — Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended record when reason/name/slug/typeRecord match. - `externalId` (string, optional, nullable) — Matched external identifier when duplicate scoring used one. - `name` (string, optional, nullable) — Candidate display name from the existing record. - `operatingStatus` (string, optional, nullable) — Current operating status for entity candidates. - `publicPath` (string, optional, nullable) — Public API/UI path for the candidate when available. - `slug` (string, optional, nullable) — Candidate slug from the existing record. - `typeRecord` (enum, optional, nullable) — Candidate entity type from the existing record. - Allowed values: `Company`, `Investment Firm`, `Fund`, `Nonprofit`, `Government`, `Organization`, `Business Line`, `Product`, `Service` ### NewsCandidateScore Duplicate candidate scoring result for news articles. Use id/slug/externalId/reason to decide whether the candidate is the requested article. score ranks review priority; it does not prove absence. - `id` (integer, required) — News article id to read or update when this candidate is the requested article. - `reason` (list of string, required) — Match reasons for reviewing the candidate. Exact reasons are decision signals regardless of whether score crosses the review threshold. - `score` (integer, required) — Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended article when reason/slug/externalId match. - `externalId` (string, optional, nullable) — Matched external article identifier when duplicate scoring used one. - `slug` (string, optional, nullable) — Candidate article slug from the existing record. ## Examples **Response** ```json { "cdnUrl": "string", "mediaType": "ENTITY", "path": "string", "accuracy": { "confidence": "HIGH", "method": "PERCEPTUAL_HASH", "outcome": "MATCH", "reference": [ { "hammingDistance": 1, "url": "string" } ], "approval": { "changedAt": "2024-01-15T09:30:00Z", "dataSourceUpdatedAt": "2024-01-15T09:30:00Z", "detail": "string", "kind": "string", "pendingApproval": 1, "sourceId": "string", "status": "string" }, "candidateObserved": "string", "referenceObserved": "string", "sharedFeature": "string" }, "firstUploadedAt": "2024-01-15T09:30:00Z", "provenance": { "changedAt": "2024-01-15T09:30:00Z", "dataSourceUpdatedAt": "2024-01-15T09:30:00Z", "detail": "string", "kind": "string", "pendingApproval": 1, "sourceId": "string", "status": "string" }, "targetId": "string" } ``` **SDK Code** ```python import requests url = "https://api.aventure.vc/v1/news/1/thumbnail" response = requests.get(url) print(response.json()) ``` ```javascript const url = 'https://api.aventure.vc/v1/news/1/thumbnail'; const options = {method: 'GET'}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.aventure.vc/v1/news/1/thumbnail" req, _ := http.NewRequest("GET", url, nil) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.aventure.vc/v1/news/1/thumbnail") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.aventure.vc/v1/news/1/thumbnail") .asString(); ``` ```php request('GET', 'https://api.aventure.vc/v1/news/1/thumbnail'); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.aventure.vc/v1/news/1/thumbnail"); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let request = NSMutableURLRequest(url: NSURL(string: "https://api.aventure.vc/v1/news/1/thumbnail")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```