Application API Failure Codes
October 15, 2026 at 9:35 AMFailure Codes
This page documents all of the failure codes we return in the API along with rules about how they are designed. Note that the list duplicates information in the main API documentation pages but it gathers all the codes in numerical order so the structure is easier to see.
When we have only one API parameter to validate (or the possible failures are very simple), we tend to only return status 403 Forbidden with fail set to "Invalid Argument" and no failcode. When multiple parameters are being validated, we return a failcode array containing a failure code for each validation that fails (note that we might not validate every parameter if some validation has already failed).
In general the codes are x0y0z where x represents the “API Group”, y represents the parameter, and z represents the specific validation failure for parameter y. There are some exceptions. Photo validations are 11y0z, for example. In general, y is the order in which the parameters are documented (or were originally documented) and therefore required parameters come first, then optional ones. They probably should have been in alphabetical order within those two groups but…
Adding new API Groups will be carefully considered since we only have 80 and 90 left unless we start using xx instead of x0 values. API Groups shouldn’t have more than nine distinct validated parameters (otherwise we should rethink the APIs!) so new parameter numbers can be added sequentially along with validation numbers on each of those.
Registration (mainly) but also Profile Update
- 10000 - unknown field - check spelling
- 10001 -
genderis not valid (not"Male"or"Female") - 10002 -
genderpreferenceis not valid (not"Male"or"Female") - 10011 -
countryis not valid - 10021 -
firstnameis empty or too long (limit 100) - 10022 -
lastnameis empty or too long (limit 100) - 10031 -
latitudeis not a valid latitude - 10032 -
longitudeis not a valid longitude - 10041 -
zipis empty or too long (limit 20) - 10051 -
cityis empty or too long (limit 255) - 10061 -
stateis empty or too long (limit 45) - 10101 -
usernamealready in use - 10102 - invalid
username(contains illegal characters) - 10201 -
passwordminimum length and/or other restrictions not met - 10301 - invalid
emailaddress (incorrect format) - 10302 -
emailaddress already in use - 10401 - invalid
dateofbirthformat - 10402 - minimum age requirement not met (
dateofbirth) - 10501 -
headlineis empty or too long (over 75 characters) - 10601 -
aboutmeis empty or too long (over 1,500 characters) - 10701 - affiliate is suspended - call
/recordaffiliatehitto obtain redirect URL
Photo Handling
- 11201 - image / imageurl missing (at least one must be provided)
- 11202 - both image and imageurl are present (only one may be provided)
- 11203 - member already has their maximum number of uploaded photos
- 11204 - we were unable to process the image after it was uploaded (for an unspecified reason)
- 11205 - the image was too large (we cap at around 5MB)
- 11206 - the image was not an acceptable type (BMP, GIF, ICO, JPG, PNG)
- 11301 - if
photoidis missing - 11302 - if
photoidis not numeric - 11303 - if a photo identified by
photoiddoes not exist or does not belong to this member
Profile Update
- 20101 - invalid value for
gender - 20102 - member has exceeded allowable number of
genderchanges - 20201 - invalid value for
country - 20301 - invalid value for
zip(orzippostalcode) - 20401 - invalid
dateofbirth(not a valid date value) - 20402 - member has exceeded allowed number of
dateofbirthchanges - 20403 - minimum age requirement not met
- 20501 - email is not valid email address
- 20502 - email is already in use on this site
- 20701 -
display_name_preferenceshould be"nickname"or"firstname" - 20702 -
onlineshould betrueorfalse - 20703 -
world_plusshould be"opted-in","opted-out", or"undecided" - 20704 -
deactivatedshould betrueorfalse - 20801 -
settingis not valid - 20901 - value(s) provided are out of range (for the parameter’s expected list of values)
Saved Searches
- 20222 -
namewas not provided - 20223 -
namewas empty or too long (limit 32) - 20224 -
idwas provided (other APIs do acceptidhowever) - 20225 - A saved search with this
namealready exists
Match Criteria v1
- 30101 -
distanceis invalid - 30201 - only one age provided (agefrom/ageto)
- 30202 - age is not numeric
- 30203 - age range is invalid (should be 18-120)
- 30301 -
lookingforis invalid (not"Male"or"Female") - 30401 -
zippostalcodeis invalid (for the givencountry) - 30501 -
countryis invalid
Search / Search Criteria v2
- 31000 - the criterion value is ill-formed (not a hash map)
- 31003 - a general criterion value does not contain either
valueorvalues - 31004 - a range criterion value does not contain
toandfrom, or their values are not numeric, or thefromvalue is higher than thetovalue - 31005 - an age range criterion value has
toand/orfromvalues outside the range 18..120 - 31006 - a geolocation criterion does not contain
withinandofvalues, or thewithinvalue is not a numeric value from the set-1,20,30,40,50,150,500,1000 - 31007 - a geolocation criterion has a
withinvalue of20,30,40, or50but the member is not platinum (only platinum members can specify those smaller distances) - 31008 - the criterion is only available to platinum members (the current member is not a subscriber)
- 31009 - the criterion value(s) specified are not legal for this criterion (e.g., 50 for
smoking, which only has10,20,30, and40as legal values) - 31010 - the
countrycriterion value is illegal (not a valid two-letter ISO code) - 31011 - the
zipcodecriterion value is illegal (for the member’scountry) - 31012 - the
agecriterion is missing: it is required for all searches - 31013 - only one of
zipcode,state, orlocationmay be provided (they are both optional but they are mutually exclusive)
Search v1
- 40101 -
distanceis invalid - 40201 - only one age provided (
agefrom/ageto) - 40202 - age is not numeric
- 40203 - age range is invalid (should be 18-120)
- 40301 -
lookingforis invalid (not"Male"or"Female")
Interaction Limits
- 50001 - maximum number of likes per day exceeded
Messaging/Profile Access
Since there is a great deal of overlap with the “can access profile” logic here, some of these are also returned by the GET /users/* and POST /like APIs as well.
- 80001 - self send
- 80002* - gender preferences do not match
- 80003* - receiver deleted
- 80004* - receiver has blocked sender
- 80005 - sender has blocked receiver
- 80006 - receiver is (not searchable, or not approved, or rejected) and has not messaged sender and is not a connection
- 80007* - sender and receiver are not in the same equivalence and recipient is not opted into world+
- 80008 - member is not platinum (messaging 3.0)
- 80009+ - sender is over limit
- 80010+ - sender cannot send to receiver’s country
- 80011+ - sender has not uploaded photos
- 80012 - sender doesn’t exist
- 80013 - receiver doesn’t exist
- 80014* - receiver suspended
- 80015 - receiver is admin
- 80016 - failed to store message; should be rare, best policy on reciept is to retry.
Codes marked with ‘+’ exist, but messaging 3.0 ignores those conditions.
Codes marked with ‘*’ are also returned by GET /users/* where “sender” means the viewer (the logged-in member) and “receiver” means the profile they are trying to access. In addition GET /users/* can also return the following fail codes:
- 80061 - the receiver is hidden (not searchable)
- 80062 - the receiver is new (not yet approved)
- 80063 - the receiver has been rejected (by Member Services)
- 80064 - the receiver is inaccessible for other, undocumented reasons
- 80065 - the receiver is inaccessible for an unknown reason (this should never happen)