to.co startsida

to.co API

Låt din egen programvara, till exempel en webbplats, ett kassasystem eller ett skript, läsa ditt företag på to.co och hålla det uppdaterat. Nycklar ingår i Pro och Grow.

Skaffa en API-nyckel Routes

Bas-URL
https://api.to.co/v1/orgs/{host}
Autentisering
Authorization: Bearer toco_ak_…

Skaffa en API-nyckel

Öppna ditt företag i my.to.co, välj API-nycklar och sedan Skapa nyckel. Ge den ett namn, välj behörigheter och när den löper ut (högst ett år), och kopiera den: den visas en gång och bara en hash av den sparas.

Skicka nyckeln i Authorization-huvudet i varje begäran. En nyckel fungerar bara för sitt eget företag: alla andra adresser svarar ”hittades inte”. API:t tar bara emot nycklar, aldrig en webbläsarsession.

Exempelanrop

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

Behörigheter och planer

En nyckel kan bara göra det dess behörigheter tillåter, och bara det som företagets plan omfattar när varje begäran görs. Läsning ingår i Pro och Grow, ändringar i Grow.

BehörighetVad den görFrån plan
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

Routes

Alla routes ligger under bas-URL:en, med ditt företags to.co-adress i stället för {host}, till exempel mybusiness.uk.to.co. Begäranden och svar är JSON. Ändringar går igenom samma kontroller, historik och ompublicering som ändringar i my.to.co och registreras som gjorda av nyckeln.

RouteVad den görBehörighet
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

Krediter och gränser

  • Varje begäran använder en API-kredit, ur samma månadspott som din egen AI-assistents anrop till ditt företags MCP-server: 5,000 i månaden per företag på Pro och 50,000 på Grow. En begäran som misslyckas ger tillbaka sin kredit. Krediterna börjar om den 1:a varje månad (UTC), och det finns inga extra avgifter. Svaren innehåller X-Credits-Limit, X-Credits-Remaining och X-Credits-Reset.
  • Upp till 120 begäranden i minuten per nyckel.
  • Upp till 60 ändringar i minuten per företag, räknat tillsammans med ändringar i my.to.co och via MCP.

Fel

Ett fel svarar med en HTTP-status och JSON: error (ett meddelande), code (en av koderna nedan) och request_id. Ett 429-svar innehåller 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.

Webhooks

På Grow kan to.co också skicka signerade händelser till din egen server när något ändras, till exempel ett nytt meddelande eller ändrade företagsuppgifter. Ställ in dem i my.to.co under Webhooks.

Nästa steg

Språk

Välj bland de språk som webbplatsen och appen har fullt stöd för.