Access & visibility
Allow customers.AddBriefContext on your API key.
Acting member required. Send Brigg-Act-As with an approved member account ID. The key supplies permissions; the member selects whose data is used.
The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply.
Request fields
Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.
targetobjectRequiredThe Company, Person or Meeting whose brief receives the context. Use its exact record type and top-level ID.
Nested fields
typestringRequiredExact type of the target record: core:Company, core:Person or core:Meeting.
At least 1 character. At most 60 characters.
idstringRequiredTop-level record ID from ListCompanies, ListPeople or ListMeetings matching target.type.
At least 1 character. At most 80 characters.
itemobject (4 variants)RequiredOne source to attach, chosen by kind. Supply the fields for that variant only; this is an input source, not a returned record.
Nested fields
kind = "note"
kind"note"Requirednote supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record.
Always "note".
textstringRequiredText content.
At least 1 character. At most 20000 characters.
kind = "link"
kind"link"Requirednote supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record.
Always "link".
urlstringRequiredAn HTTP(S) webpage URL. Its content is fetched asynchronously before use; successful attachment does not mean the fetch succeeded.
At least 4 characters. At most 2000 characters.
kind = "file"
kind"file"Requirednote supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record.
Always "file".
file_idstringRequiredExisting file ID from ListDocuments or CompleteUpload. It must be readable by the target brief's audience.
At least 1 character. At most 80 characters.
labelstringOptionalA label for the row; the filename when omitted.
At least 1 character. At most 120 characters.
kind = "entry"
kind"entry"Requirednote supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record.
Always "entry".
entry_idstringRequiredTop-level ID of another visible record. The target brief's audience must be able to read it.
At least 1 character. At most 80 characters.
metastringOptionalOptional display subtitle for a referenced record. It does not replace that record's content.
At most 160 characters.
Choose the record, then manage its briefing sources
Use a top-level record ID from List companies, List people or List meetings, paired with its matching target.type. An account ID cannot identify this target.
A new context item or a removal schedules regeneration when the brief is ready to run; the response confirms the context change, not a finished brief. A website first needs its content fetched. Generate brief can report scrape_pending or already_running instead of starting more work. Review the resulting brief and source-fetch state in Brigg: the public record model does not expose the brief body or a source-status listing.
Keep source_id together with target for removal. It identifies the attachment to this brief, not the original file or record. Adding the same URL, file or record again reuses its source_id; notes are distinct additions. Removing a source leaves the original file or record intact.
A file or referenced record must be readable by the target brief's audience, not merely by the caller. Adding a member-private file to a workspace-shared brief is refused. The target's existing private/workspace visibility stays in force.
Response
Returns 200 OK with a JSON body.
okbooleanRequiredThe context source is attached. Generation and website fetching may still be pending.
source_idstringRequiredIdentity of this context attachment. Keep it with target to call RemoveBriefContext; it is not the original file or record ID.
Errors & retries
Set BRIGG_REQUEST_ID once for each logical action. The samples send it as Idempotency-Key. Reuse the same value and body on retries, including after a timeout; a missing response does not prove the action failed.
For rate limits, follow the server’s retry guidance and back off. See HTTP errors and safe retries and limits.
| HTTP status | Code | What to do |
|---|---|---|
| 400 | invalid_json |
Send a JSON object with Content-Type: application/json. |
| 400 | invalid_input |
Check the request fields and types. Supply a stable Idempotency-Key containing 1–200 characters. |
| 401 | invalid_key |
The workspace API key is missing, invalid or revoked. |
| 403 | forbidden |
Check the key’s operation and resource grants. Supply Brigg-Act-As with a member authorized by the key’s delegation grant. The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply. |
| 404 | not_found |
The target is unavailable, or the source file/record is not readable by the target brief's audience. |
| 429 | rate_limited |
Wait for Retry-After before retrying. Reuse the original Idempotency-Key. |
| 400 | bad_url |
Use an HTTP or HTTPS page URL for kind=link. |
| 409 | conflict |
A concurrent context change could not be resolved. Re-read the brief in Brigg before making a new action. |
Next steps
JSON schemas
Use the complete schemas for validation or client generation.
Full request JSON schema
{
"type": "object",
"properties": {
"target": {
"type": "object",
"properties": {
"type": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Exact type of the target record: core:Company, core:Person or core:Meeting."
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Top-level record ID from ListCompanies, ListPeople or ListMeetings matching target.type."
}
},
"required": [
"type",
"id"
],
"additionalProperties": false,
"description": "The Company, Person or Meeting whose brief receives the context. Use its exact record type and top-level ID."
},
"item": {
"anyOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "note",
"description": "note supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "Text content."
}
},
"required": [
"kind",
"text"
],
"additionalProperties": false,
"description": "One source to attach, chosen by kind. Supply the fields for that variant only; this is an input source, not a returned record."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "link",
"description": "note supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record."
},
"url": {
"type": "string",
"minLength": 4,
"maxLength": 2000,
"description": "An HTTP(S) webpage URL. Its content is fetched asynchronously before use; successful attachment does not mean the fetch succeeded."
}
},
"required": [
"kind",
"url"
],
"additionalProperties": false,
"description": "One source to attach, chosen by kind. Supply the fields for that variant only; this is an input source, not a returned record."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "file",
"description": "note supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record."
},
"file_id": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Existing file ID from ListDocuments or CompleteUpload. It must be readable by the target brief's audience."
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "A label for the row; the filename when omitted."
}
},
"required": [
"kind",
"file_id"
],
"additionalProperties": false,
"description": "One source to attach, chosen by kind. Supply the fields for that variant only; this is an input source, not a returned record."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "entry",
"description": "note supplies text; link supplies an HTTP(S) page URL; file refers to a readable document; entry refers to another readable record."
},
"entry_id": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Top-level ID of another visible record. The target brief's audience must be able to read it."
},
"meta": {
"type": "string",
"maxLength": 160,
"description": "Optional display subtitle for a referenced record. It does not replace that record's content."
}
},
"required": [
"kind",
"entry_id"
],
"additionalProperties": false,
"description": "One source to attach, chosen by kind. Supply the fields for that variant only; this is an input source, not a returned record."
}
],
"description": "One source to attach, chosen by kind. Supply the fields for that variant only; this is an input source, not a returned record."
}
},
"required": [
"target",
"item"
],
"additionalProperties": false,
"examples": [
{
"target": {
"type": "core:Company",
"id": "e_company_northstar"
},
"item": {
"kind": "note",
"text": "The customer wants a two-week pilot before rollout."
}
}
]
}Full response JSON schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "The context source is attached. Generation and website fetching may still be pending."
},
"source_id": {
"type": "string",
"description": "Identity of this context attachment. Keep it with target to call RemoveBriefContext; it is not the original file or record ID."
}
},
"required": [
"ok",
"source_id"
],
"additionalProperties": false,
"examples": [
{
"ok": true,
"source_id": "bci_note_northstar"
}
]
}