Patch news article for entity

View as Markdown

RFC 7396 merge-patch for a news article directly joined to the entity; product/service-joined list rows 404 here (see GET /v1/news/detail).

Authentication

AuthorizationBearer

User bearer token: Supabase or Clerk session JWT, Clerk OAuth access token, or Clerk personal API key

OR
X-API-Keystring

Admin API key for system-to-system write operations

Path parameters

newsIdintegerRequired
News article row id scoped to this entity news join

Query parameters

idstringOptionalformat: "uuid"

Owner-scoped resource UUID selector.

slugstringOptionalformat: "^[a-z0-9_-]+$"<=255 characters

Owner-scoped resource slug selector.

sourceTypeenumRequired
Write provenance source type.
sourceDetailstringRequired
Source detail or reviewer reference for the write.
sourceProviderstringOptional

Provider name for provider-native IDs or slugs.

sourceProviderIdstringOptional

Provider-native source ID.

sourceProviderSlugstringOptional

Provider-native source slug.

actorTypeenumOptional

Actor type; inferred as agent when agentChassis and agentModel are supplied, or as employee from an authenticated user JWT session.

Allowed values:
agentChassisstringOptional

Agent chassis token for agent-authored writes.

agentModelstringOptional

Agent model id for agent-authored writes.

overrideGateenumOptional
Gate to override from the prior ProblemDetail resolution.
overrideReasonstringOptional0-2048 characters

Source-backed reason for overriding the returned gate requirement.

Request

News article fields to update (RFC 7396 merge patch)

allowSuspectedShellStripboolean or nullOptional

Override suspected shell-strip rejection for intentional prose; prefer —from-file.

authorstring or nullOptional
Author name
categorystring or nullOptional

Comma-separated category tags (e.g. “Fintech,Startups”); array syntax is rejected.

contentstring or nullOptional<=100000 characters

Article content body. Required on CREATE for internal articles (externalNewsArticle=false); external articles (the default) omit it and render via redirect to newsUrlOriginal.

detachEntityboolean or nullOptional
When true, removes all existing entity joins
detachPersonboolean or nullOptional
When true, removes the existing person join
entityJoinIdlist of strings or nullOptional

Entity ids for the replacement entity join set; scoped routes keep route entity

entityMatchEvidencestring or nullOptional0-2000 characters
Supporting quote or evidence for entity match
entityMatchScoredouble or nullOptional0-100
Score applied to every entityJoinId replacement join
entityMatchStatusstring or nullOptionalformat: "^(auto-match|needs-review|approved|rejected)(\|user=[^|]+\|at=[^|]+)?$"

Match status applied to every entityJoinId replacement join; matchStatus must be auto-match|needs-review|approved|rejected with optional audit metadata

excerptstring or nullOptional

Article excerpt/summary. Required on CREATE for external articles (the default).

externalIdstring or nullOptional
External source identifier
externalNewsArticleboolean or nullOptional

External article flag. Defaults to true (external/third-party article) when omitted; set false only for an internal aVenture-hosted article, which requires content.

newSlugstring or nullOptional

Preferred detail-update slug rename field; omit on create.

newsImageThumbnailstring or nullOptional

Managed news thumbnail path returned by media upload/import; sourceDetail must match stored media provenance.

newsUrlOriginalstring or nullOptional

Original live news article URL. Required on CREATE for external articles. Rejected (422): ycombinator.com/companies/{company-slug}, pitchbook.com/profiles/, linkedin.com/company/, producthunt.com/products/**, and other entity/profile URLs; use the ProblemDetail surface, usually EntityUrl.urlType=* via entities urls create.

personIdstring or nullOptionalformat: "uuid"
Single person id for the replacement person join
personMatchEvidencestring or nullOptional0-2000 characters
Supporting quote or evidence for person match
personMatchScoredouble or nullOptional0-100

Score for the person match (0-100)

personMatchStatusstring or nullOptionalformat: "^(auto-match|needs-review|approved|rejected)(\|user=[^|]+\|at=[^|]+)?$"

Match status for the replacement person join; matchStatus must be auto-match|needs-review|approved|rejected with optional audit metadata

personSlugstring or nullOptional
Single person slug for the replacement person join
publicationstring or nullOptional

Publication/source name. Required on CREATE for external articles (the default).

publishedAtdatetime or nullOptional
Publication timestamp
qwen4bFp16Embeddinglist of float or nullOptional

Deprecated: caller-supplied article embeddings are rejected. Canonical section-fusion embeddings refresh from saved article content. Embedding vector pinned to qwen-4b-fp16 (Qwen3-Embedding-4B-f16.gguf) from https://huggingface.co/Qwen/Qwen3-Embedding-4B-GGUF?show_file_info=Qwen3-Embedding-4B-f16.gguf; only this fp16 model is accepted and exactly 2560 floats are required

slugstring or nullOptional

Article slug. Omit for the dated slug generated from publishedAt and title; detail updates may rename through this field or newSlug.

titlestring or nullOptional0-500 characters
Article title

Response

OK
coreobject
Canonical news owner for list and core semantics
entityMentionResolvedlist of objects

Resolved entity mentions — read-only display projections. News mutations attach entities only via flat entityJoinId values, never these nested objects.

personMentionResolvedlist of objects

Resolved person mentions — read-only display projections. News mutations attach people only via flat personId/personSlug values, never these nested objects.

contentstring or nullOptional
externalIdstring or nullOptional
linkedContentstring or nullOptional

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
406
Not Acceptable Error
409
Conflict Error
415
Unsupported Media Type Error
422
Unprocessable Entity Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error