Validate and host an agent-authored Grounded result
const url = 'https://www.cemented.ai/v1/grounded-artifacts';const options = { method: 'POST', headers: { 'Idempotency-Key': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"artifact":{"kind":"grounded_research_draft","title":"example","question":"example","queries":[],"sources":[{"id":"example","title":"example","content":"example","publishedDate":"example","author":"example","quality":1,"explanation":"example","type":"web","url":"https://example.com","contentSha256":"example"}],"evidence":[{"id":"example","sourceId":"example","quote":"example"}],"constants":[],"computed":[],"output":{"type":"markdown","value":"example"}},"publish":false,"project_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","research_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://www.cemented.ai/v1/grounded-artifacts \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --data '{ "artifact": { "kind": "grounded_research_draft", "title": "example", "question": "example", "queries": [], "sources": [ { "id": "example", "title": "example", "content": "example", "publishedDate": "example", "author": "example", "quality": 1, "explanation": "example", "type": "web", "url": "https://example.com", "contentSha256": "example" } ], "evidence": [ { "id": "example", "sourceId": "example", "quote": "example" } ], "constants": [], "computed": [], "output": { "type": "markdown", "value": "example" } }, "publish": false, "project_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "research_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'Validates exact evidence, citation placeholders, JSON Schema structured results, and agent-produced computed traces, then atomically materializes a completed Grounded request. When research_id is supplied, the same transaction delivers the answer to that live session and ends its stream. No hosted research provider is invoked and no research credits are charged. Results are private unless publish is true.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Header Parameters
Section titled “Header Parameters ”Retry key scoped to the authenticated user. Reusing it with the same body returns the original report; a different body returns 409.
Retry key scoped to the authenticated user. Reusing it with the same body returns the original report; a different body returns 409.
Request Body required
Section titled “Request Body required ”object
object
object
object
object
object
object
object
object
object
object
object
object
object
Live research session created by /v1/research-sessions. Completing the upload also delivers the report to that session and closes its stream.
Responses
Section titled “ Responses ”Idempotent replay of an existing successful upload
object
object
Example
{ "object": "grounded_report", "output": { "type": "markdown" }, "warnings": [ { "code": "retrieval_unverified" } ]}Artifact validated and a completed report was created
object
object
Example
{ "object": "grounded_report", "output": { "type": "markdown" }, "warnings": [ { "code": "retrieval_unverified" } ]}Malformed envelope, missing idempotency key, or a zero-data-retention account
object
object
Example generated
{ "error": { "message": "example", "type": "example", "code": "example" }}Unauthorized
object
object
Example generated
{ "error": { "message": "example", "type": "example", "code": "example" }}The requested project or research session does not exist or is inaccessible
object
object
Example generated
{ "error": { "message": "example", "type": "example", "code": "example" }}The idempotency key was already used with a different upload body, or the research session already has a different report
object
object
Example generated
{ "error": { "message": "example", "type": "example", "code": "example" }}The artifact is well-formed JSON but fails one or more Grounded invariants
object
object
object
Example
{ "error": { "type": "invalid_request_error", "code": "artifact_validation_failed", "issues": [ { "code": "invalid_draft" } ] }}