Home page di to.co
Inizia

L’API di to.co

Lascia che il tuo software, come un sito web, un registratore di cassa o uno script, legga la tua attività su to.co e la tenga aggiornata. Le chiavi sono incluse in Pro e Grow.

Ottieni una chiave API Rotte

URL di base
https://api.to.co/v1/orgs/{host}
Autenticazione
Authorization: Bearer toco_ak_…

Ottieni una chiave API

Apri la tua attività in my.to.co, scegli Chiavi API e poi Crea chiave. Dalle un nome, scegli le autorizzazioni e quando scade (al massimo un anno) e copiala: viene mostrata una sola volta e ne conserviamo solo un hash.

Invia la chiave nell’intestazione Authorization a ogni richiesta. Una chiave funziona solo per la propria attività: qualsiasi altro indirizzo risponde «non trovato». L’API accetta solo chiavi, mai una sessione del browser.

Esempio di chiamata

curl https://api.to.co/v1/orgs/mybusiness.uk.to.co \
  -H "Authorization: Bearer toco_ak_…"

Autorizzazioni e piani

Una chiave può fare solo ciò che le sue autorizzazioni consentono, e solo ciò che il piano dell’attività include al momento di ogni richiesta. La lettura è in Pro e Grow; le modifiche in Grow.

AutorizzazioneCosa faDal piano
company:readYour company details, services and locations.Pro
messages:readMessages from your contact form (not those held as spam).Pro
company:writeReplace your services, and change phone numbers and opening hours.Grow
posts:readThe posts you write on to.co, drafts included.Pro
posts:writeWrite, save, publish, unpublish and delete posts.Grow

Rotte

Ogni rotta si trova sotto l’URL di base, con l’indirizzo to.co della tua attività al posto di {host}, per esempio mybusiness.uk.to.co. Richieste e risposte sono in JSON. Le modifiche passano per gli stessi controlli, la stessa cronologia e la stessa ripubblicazione di quelle fatte in my.to.co, registrate come fatte dalla chiave.

RottaCosa faAutorizzazione
GET /v1/orgs/{host}The company record, with its services and locations.company:read
GET /v1/orgs/{host}/servicesThe services, in order.company:read
GET /v1/orgs/{host}/locationsThe locations, with phones and opening hours.company:read
GET /v1/orgs/{host}/messagesContact form messages. Filter with ?status=new|read|replied|archived.messages:read
GET /v1/orgs/{host}/messages/{id}One message.messages:read
PATCH /v1/orgs/{host}Change the company phone numbers: JSON { "phones": … }.company:write
PUT /v1/orgs/{host}/servicesReplace the whole list of services, in order: JSON { "services": [ … ] }.company:write
PATCH /v1/orgs/{host}/locations/{location}Change a location: JSON with any of phones, normal_hours and special_hours. Every value is checked, and the answer carries the checks. The registered office comes from the register and cannot be changed.company:write
GET /v1/orgs/{host}/postsPosts written on to.co, newest change first, a page at a time: ?limit, ?state and ?cursor (next_cursor from the page before).posts:read
GET /v1/orgs/{host}/posts/{id}One post, its body as blocks, with its version as the ETag.posts:read
POST /v1/orgs/{host}/postsA new draft: JSON { "title", "standfirst", "body" }, or the body as text/markdown.posts:write
PATCH /v1/orgs/{host}/posts/{id}Save a post. Send the version you are changing as If-Match; JSON, or the body as text/markdown.posts:write
DELETE /v1/orgs/{host}/posts/{id}Move a post to the bin. The owner can restore it in my.to.co for 30 days.posts:write
POST /v1/orgs/{host}/posts/{id}/publishPublish the If-Match version. It is checked first, as when the owner publishes.posts:write
POST /v1/orgs/{host}/posts/{id}/unpublishTake a post off the page and back to a draft.posts:write

Crediti e limiti

  • Ogni richiesta usa un credito API, dalla stessa quota mensile delle chiamate del tuo assistente IA al server MCP della tua attività: 5,000 al mese per attività in Pro e 50,000 in Grow. Una richiesta non riuscita restituisce il suo credito. I crediti ripartono il 1° di ogni mese (UTC) e non ci sono costi aggiuntivi. Le risposte riportano X-Credits-Limit, X-Credits-Remaining e X-Credits-Reset.
  • Fino a 120 richieste al minuto per chiave.
  • Fino a 60 modifiche al minuto per attività, contate insieme a quelle fatte in my.to.co e tramite MCP.

Errori

Un errore risponde con uno stato HTTP e JSON: error (un messaggio), code (uno di quelli qui sotto) e request_id. Un 429 riporta Retry-After.

  • invalid_request (400) — The body or a query value is not valid; the message says which field.
  • cookie_not_accepted (400) — The request carried a browser session. This API takes an API key only.
  • if_match_required (400) — A post change without If-Match.
  • not_ready (400) — The post cannot be published yet; problems lists why.
  • image_unknown (400) — A post body shows an image the post does not have. A key cannot upload images.
  • invalid_key (401) — No key, or one that is unknown, revoked or expired.
  • insufficient_scope (403) — The key does not have the scope this route needs.
  • plan_required (403) — The company plan does not include this scope now; plan_needed names the plan that does.
  • insufficient_role (403) — The person who made the key no longer has the role for this; an owner makes a new key.
  • not_found (404) — Not found. A host other than the key's own company is always not found.
  • registered_office (409) — The registered office comes from the company register and cannot be changed with a key.
  • post_changed (409) — The post changed since the If-Match version. Read it again.
  • post_deleted (409) — The post is in the bin.
  • not_draft (409) — Only a draft can be scheduled.
  • slug_taken (409) — Another post already uses that address.
  • rate_limited (429) — Too many requests. Wait for Retry-After.
  • credits_exhausted (429) — This month's API credits are used. They start again on the first of next month; there are no overage charges.
  • credits_unavailable (503) — The API cannot count credits right now. Try again later.

Webhook

In Grow, to.co può anche inviare eventi firmati al tuo server quando qualcosa cambia, come un nuovo messaggio o una modifica ai dati della tua attività. Configurali in my.to.co alla voce Webhook.

Prossimi passi

Lingua

Scegli tra le lingue in cui il sito e l’app sono completamente disponibili.