Appearance
meta-catalog
3 endpoints.
GET /api/v1/meta-catalog
Get Catalog
The whole catalogue, or the slice valid for one objective.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
objective | query | no |
200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/meta-catalog/validate
Validate
Every reason Meta would reject this, in plain language. ok true means publishable.
Request body
json
{
"properties": {
"objective": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Objective"
},
"optimization_goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Optimization Goal"
},
"billing_event": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Billing Event"
},
"destination_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination Type"
},
"bid_strategy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Bid Strategy"
},
"bid_amount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Bid Amount"
},
"special_ad_categories": {
"items": {
"type": "string"
},
"type": "array",
"title": "Special Ad Categories"
},
"targeting": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Targeting"
},
"creative": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Creative"
},
"daily_budget": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Daily Budget"
},
"lifetime_budget": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lifetime Budget"
},
"min_daily_budget": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Min Daily Budget"
},
"has_pixel": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Has Pixel"
},
"page_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Page Id"
},
"adset_schedule": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Adset Schedule"
},
"lifetime_spend_cap": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lifetime Spend Cap"
},
"lifetime_min_spend_target": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Lifetime Min Spend Target"
}
},
"type": "object",
"title": "ValidateRequest"
}200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/meta-catalog/normalise
Normalise
The same normaliser the pipeline runs after generation.
Exposed because human edits must go through it too — "I'll just set it myself" must not be able to produce an ad set Meta will reject.
Request body
json
{
"properties": {
"objective": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Objective"
},
"optimization_goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Optimization Goal"
},
"billing_event": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Billing Event"
},
"destination_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Destination Type"
},
"bid_strategy": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Bid Strategy"
},
"call_to_action_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Call To Action Type"
},
"placements": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Placements"
},
"targeting": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Targeting"
},
"special_ad_categories": {
"items": {
"type": "string"
},
"type": "array",
"title": "Special Ad Categories"
}
},
"type": "object",
"title": "NormaliseRequest",
"description": "Coerce free-typed or model-generated values onto real Meta enums."
}200 — Successful Response
json
{}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}