Create a Brand Skill
curl --request POST \
--url https://www.trybloom.ai/api/v1/brand-skills \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"sources": [
{
"kind": "website",
"url": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({sources: [{kind: 'website', url: '<string>'}]})
};
fetch('https://www.trybloom.ai/api/v1/brand-skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.trybloom.ai/api/v1/brand-skills"
payload = { "sources": [
{
"kind": "website",
"url": "<string>"
}
] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"brandId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending"
}
}{
"error": {
"code": "INVALID_SOURCE",
"status": 400,
"message": "Invalid brand source",
"data": "<unknown>"
}
}{
"error": {
"code": "UNAUTHORIZED",
"status": 401,
"message": "Invalid or missing API credentials",
"data": "<unknown>"
}
}{
"error": {
"code": "ACCOUNT_BANNED",
"status": 403,
"message": "This account has been suspended.",
"data": "<unknown>"
}
}{
"error": {
"code": "IDEMPOTENCY_CONFLICT",
"status": 409,
"message": "Idempotency-Key was already used with a different request",
"data": "<unknown>"
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"status": 429,
"message": "Rate limit exceeded",
"data": "<unknown>"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"status": 500,
"message": "Failed to create Brand Skill",
"data": "<unknown>"
}
}Brand Skills
Create a Brand Skill
Build a Brand Skill asynchronously from website or non-PDF file sources. PDF files are not supported. Poll GET /brand-skills/{id} until the build completes or fails.
POST
/
brand-skills
Create a Brand Skill
curl --request POST \
--url https://www.trybloom.ai/api/v1/brand-skills \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"sources": [
{
"kind": "website",
"url": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({sources: [{kind: 'website', url: '<string>'}]})
};
fetch('https://www.trybloom.ai/api/v1/brand-skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.trybloom.ai/api/v1/brand-skills"
payload = { "sources": [
{
"kind": "website",
"url": "<string>"
}
] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"brandId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending"
}
}{
"error": {
"code": "INVALID_SOURCE",
"status": 400,
"message": "Invalid brand source",
"data": "<unknown>"
}
}{
"error": {
"code": "UNAUTHORIZED",
"status": 401,
"message": "Invalid or missing API credentials",
"data": "<unknown>"
}
}{
"error": {
"code": "ACCOUNT_BANNED",
"status": 403,
"message": "This account has been suspended.",
"data": "<unknown>"
}
}{
"error": {
"code": "IDEMPOTENCY_CONFLICT",
"status": 409,
"message": "Idempotency-Key was already used with a different request",
"data": "<unknown>"
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"status": 429,
"message": "Rate limit exceeded",
"data": "<unknown>"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"status": 500,
"message": "Failed to create Brand Skill",
"data": "<unknown>"
}
}Authorizations
apiKeybearer
Bloom API key, for example x-api-key: bloom_sk_....
Headers
Optional key for safely retrying this create request. Reuse the same key only with the same body.
Required string length:
1 - 255Body
application/json
Sources to combine into a Brand Skill. At most one website can be included. Non-PDF files may be up to 100 MiB each and 256 MiB combined.
Required array length:
1 - 30 elementsBrand name for the generated Skill. Defaults from the source.
Required string length:
1 - 120Optional instructions passed to the Brand Agent for this run. The Agent applies them using its existing judgment.
Maximum string length:
4000