Platform compliance

Keep your platform free of harmful contracts

Protect your community's trust by preventing harmful contracts, spam, and other undesirable assets from entering your platform.

Perfect for

Trust & Safety teams

Proactive fraud screening.

Development teams

Streamlined integrations.


Business health monitoring.

A blockchain-based firewall

Our attribution search checks for potential infringements across millions of NFT assets on several blockchains so you can block any infringement as quickly as possible.

On-chain and off-chain monitoring

Query off-chain assets against multiple blockchains to save transaction fees and other infrastructure costs.

Leverage accelerated processing of on-chain assets to validate large collections fast.

Auditable records of first publication

Explore every way an asset is tied to the blockchain with a tamper-proof ledger of publication events that can't be compromised by malicious contracts or silent updates.

Scale trust & safety with a simple API

Scan each of your assets to label potential infringements at a massive scale with high precision, allowing your trust & safety teams to pick needles out of a haystack.

NSFW protection

Our Not Safe for Work feature classifies and labels assets that may violate community standards, allowing you to decide what you deem appropriate to be on your platform.

Spam detection

Quickly alleviate your platform from any spam assets and be notified when new ones emerge.

24/7 support

Your users are not in one timezone, so neither are we, We provide 24/7 technical support for your developers and your Trust & Safety teams.

import requests

url = ""

headers = {
    "accept": "application/json",
    "content-type": "multipart/form-data"

response =, headers=headers)

require 'uri'
require 'net/http'

url = URI("")

http =, url.port)
http.use_ssl = true

request =
request["accept"] = 'application/json'
request["content-type"] = 'multipart/form-data'

response = http.request(request)
puts response.read_body

$client = new GuzzleHttpClient();

$response = $client->request('POST', '', [
  'headers' => [
    'accept' => 'application/json',
    'content-type' => 'multipart/form-data',

echo $response->getBody();
package main

import (

func main() {

	url := ""

	req, _ := http.NewRequest("POST", url, nil)

	req.Header.Add("accept", "application/json")
	req.Header.Add("content-type", "multipart/form-data")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)


OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .addHeader("accept", "application/json")
  .addHeader("content-type", "multipart/form-data")

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("content-type", "multipart/form-data");
var response = await client.PostAsync(request);

Console.WriteLine("{0}", response.Content);

Get started integrating Yakoa

Blockchain-certified publish date for increased transparency and trust in the origin and history of an item.

Unified similarity score to analyze the degree of similarity between items or sets of data.

Results in milliseconds.

Get your complimentary assessment today.

Request a demo

IP infringement is chain agnostic

That's why we take a multi-chain approach to scaling our network.