Push the creators, shows, and accounts a brand works with into Fairing. Each source you push becomes a response option on that brand's auto suggest questions.
Partner-only endpointAccess is limited to approved source contributors. A valid Fairing token that isn't from an approved contributor receives a
403. Contact us if you're a
partner who needs access.
Terminology
| Term | Meaning |
|---|---|
| Source | A creator, show, or account a customer might name when asked how they heard about a brand — e.g. a YouTube creator, a podcast, an Instagram account. |
| Channel | The platform a source lives on. Must be one of the supported channels below. |
| Channel source ID | The source's handle or identifier on that channel — e.g. a YouTube handle. Optional. |
Response options shown to customers concatenate the name and the channel source ID: Name (channel source id) — e.g. MrBeast (@MrBeast).
Behaviour
The endpoint allows up to one hundred sources to be created per request. One invalid source never blocks the rest of the batch: the valid ones are created, the invalid ones come back under rejected with field-level errors.
Deduplication and Idempotency
Sources are deduplicated on the combination of: channel, name and channel source id; compared case insensitively.
Deduplication happens within one request and across multiple as well. Retries are safe: re-pushing a source that already exists writes nothing new and simply echoes it back. If a request times out, you can retry the whole batch.
A source another partner already pushed for the same brand still comes back under created — your contribution is recorded separately — but customers see one response option, not two.
| Two sources with… | Result |
|---|---|
| the same channel, name, and channel source ID | one source |
names differing only in casing — MrBeast and mrbeast | one source |
channel source IDs differing only in a leading @ — @MrBeast and MrBeast | one source |
| the same name on different channels | two distinct sources |
| the same channel and name, one with a channel source ID and one without | two distinct sources |
Response
A well-formed batch returns 200 when every source was created, or 207 when at least one was rejected. Both carry the same body, partitioned into what was stored and what was refused:
{
"created": [
{ "name": "MrBeast", "channel": "YouTube", "channel_source_id": "MrBeast" },
{ "name": "The Daily", "channel": "Podcast", "channel_source_id": null }
],
"rejected": [],
"summary": { "created": 2, "rejected": 0 }
}createdreflects what was stored, after normalization. The channel comes back in canonical casing, and the channel source ID comes back bare, without a leading@.rejectedechoes each refused source back exactly as you sent it, next to its errors.summarycounts both partitions.
Treat 200 and 207 the same way: the batch was accepted and processed.
