Errors and limits

An error is an HTTP status code and JSON:

{ "error": "invalid", "message": "birth_year: members must be 18+" }

Rely on error — the codes are stable. message is for people and logs; its text may change.

Error codes

HTTP error What it means What to do
400 bad_json The body is not JSON Check your serialization
400 bad_id A parameter is not a UUID (match_id, to, up_to) Pass ids from network responses as is
401 unauthorized Missing key, invalid key, or the platform’s environment is suspended Check the Authorization: Bearer … header
403 forbidden The action is not allowed: liking or disliking your own user through the network; the member is hidden after reports or deleting their account (no feed either) Don’t retry
404 not_found No such member, match or message — or it isn’t yours. also a like to someone your user can’t see: a block, the other environment, a hidden member The user wasn’t sent to the network, was deleted or is unavailable: remove the card
409 match_closed The match is closed Close the conversation on your side
409 matched The like already made a match — it can’t be undone Don’t retry
409 location_change_limited The city was changed less than a day ago: a new city or a move over 50 km Tell the person they can change the city in a day; send other changes with the previous city
409 match_frozen One of the two is deleting their account (can restore within 30 days) or was hidden by the network after reports “Account deleted” or “Account unavailable”; messaging resumes after a restore or reinstate
409 member_hidden The member is hidden (consent.network: false): no feed; can only like back someone who liked them, no super likes Offer to rejoin the network
409 photo_check_gone Photo check page only: the gesture task expired or was already used The page offers to start again by itself
409 world_consent_required scope=world feed for a member without the Worldwide consent Offer to turn Worldwide on; until then, the regular feed
422 invalid The data failed validation — the field is in message Fix the data; don’t retry as is
429 rate_limited More than 600 requests per minute Wait and retry with a delay
429 super_like_limit More than 5 super likes a day Tell the person super likes come back tomorrow; a regular like still works
429 photo_check_limit more than 10 photo checks for one person a day Tell the person they can try again tomorrow
429 first_messages_limit A new member (first 7 days in the network) has already started 20 conversations today Don’t retry; tell the person they can start new conversations tomorrow. Replies in existing ones are fine
503 photo_check_off the photo comparison service is temporarily unavailable Retry later
500, 503 internal Network error or temporary unavailability (503 can come even on the key check — your key is fine) Retry with exponential backoff

Retries on your side

  • Retryable: network errors, timeouts, 429 rate_limited, 5xx. Delays: 1 s, 2 s, 4 s… up to a minute.
  • Safe to retry: PUT /v1/members, PUT /v1/members/…, DELETE /v1/members/…, POST /v1/activity, POST /v1/likes, POST /v1/dislikes, POST /v1/blocks, POST /v1/matches/{id}/read — a retry won’t create duplicates.
  • Careful: POST /v1/matches/{id}/messages — a retry after a timeout may send the message twice. Retry only if you are sure no response arrived, and show the user a “not sent” status.

Limits

What Value
Requests 600 per minute per platform, bursts up to 100
Request body up to 1 MB
Feed up to 50 profiles per request, up to 200 distinct people per member per day. Repeating a page does not spend the limit
Profile batch (PUT /v1/members) up to 100
Dislike batch up to 100
Activity marks (POST /v1/activity) up to 1000 per request
Incoming likes up to 100 per request
Events (GET /v1/events) up to 500 per request, kept for 7 days
Message history up to 100 per request
Message 1–4000 characters
Profile bio up to 1000 characters
Photos 1–9 per profile
external_id 1–128 characters
City change once a day
Super likes 5 a day per member, message up to 200 characters
New conversations for new members 20 a day during the first 7 days
Webhook delivery 10-second timeout, retries for up to 3 days

If the limits aren’t enough for you, write to us and we’ll raise them.

Optional services

See network services for entitlement_required (402), commerce_forbidden (403), commerce_conflict, quote_expired, boost_incompatible_with_incognito (409), invalid_commerce_request (422), commerce_unavailable and live_payments_unavailable (503). insufficient_test_credits (402) is TEST-only. Never replace an order reference after a timeout: retry the same request.

Unclear? Ask a developer

Read the reply and continue the conversation on this site using the private link you receive after sending. Incoming email is not accepted.