Basicamente há duas maneiras: via text/plain (por motivos de retrocompatibilidade) e via application/json. Para você escolher entre um dos dois, basta, primeiramente setar o seu header "content-type" para um dos dois:
- "Content-Type: text/plain"
- "Content-Type: application/json"
Para facilitar, deixo abaixo alguns exemplos prontos usando o curl:
$ curl -XPOST -H "Content-Type: text/plain" -d 'url_translation[url]=https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html' https://abre.ai/_/generate
$ https://abre.ai/cFgb
$ curl -XPOST -H "Content-Type: application/json" -d '{"url_translation":{"url":"https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html"}}' https://abre.ai/_/generate
$ {"data":{"id":"1681250","type":"urlTranslation","attributes":{"shortenedUrl":"https://abre.ai/cFgj","token":"cFgj","url":"https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html"}}}
# Com apelido definido
$ curl -XPOST -H "Accept: text/plain" -d 'url_translation[url]=https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html&url_translation[token]=teste-abcd' https://abre.ai/_/generate
$ https://abre.ai/teste-abcd
$ curl -XPOST -H "Content-Type: application/json" -d '{"url_translation":{"url":"https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html", "token":"teste-abcd-2"}}' https://abre.ai/_/generate
$ {"data":{"id":"1681266","type":"urlTranslation","attributes":{"shortenedUrl":"https://abre.ai/teste-abcd-2","token":"teste-abcd-2","url":"https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html"}}}
Vale lembrar que existe um limite de não poder encurtar mais do que 3 URLs a cada 10s com o mesmo IP. Em casos de erro, será retornado erro 400 e alguma explicação no corpo da resposta, como por exemplo:
{"errors":["Não é possível encurtar tantas URLs em tão pouco tempo"]}
Existem tokens com ou sem apelidos com menos do que 4 caracteres? Os tokens sem apelido vão passar de 4 em algum momento, certo? E os sem apelidos não possuem "-", certo?