Sending a record

When posting a record, the number of variables to be sent and the names of them depends upon how the survey has been configured in the warehouse. It also depends upon whether a sample is being sent with a single occurrence or with multiple occurrences.

There is an option to send records without requiring user registration. This is highly discouraged as, though it lowers the initial barrier to recording, it results in an inferior user experience overall as a person’s records can never be reliably accessed by them again.

The submission service endpoint is at mobile/submit.

The app must post the following basic inputs:




Required. The Indicia website_id of the Drupal site (23 for iRecord)


Required. An Indicia survey_id belonging to the website_id in to which records will be placed. The attributes that we post have to match those required by the survey. (42 for iRecord General survey)


Required (unless anonymous). Must match the app name that was configured.


Required. Must match the app secret set for the app name in the module configuration.


Required for registered users. If not provided or not recognised then the record is submitted anonymously.


Required for registered users and must match the value expected for the user. This is returned by the registration/log in service.

The sample inputs, some of which are required, are as follows:






Required. The system being used to submit the spatial reference. e.g.
OSGB for British National Grid
OSIE for Irish Grid
4326 for Latitude and Longitude in decimal form (WGS84 datum)


Required. The spatial reference in the format defined by the above system e.g.
SJ70 for a 10km OSGB grid square
SJ7404 for a 1km OSGB grid square
SJ743047 for a 100m OSGB grid square
SJ74350474 for a 10m OSGB grid square
M98286465 for a 10m OSIE grid square
51.43279N 2.57369E for a point using Lat/Long


Any plain text.

The occurrence inputs for a single occurrence, some of which are required, are as follows:




Required. The id of the species name within a species list.

The survey-specific custom sample attributes, which have to conform with validation rules set on the warehouse, have the format smpAttr:N = value

The survey-specific custom occurrence attributes, which have to conform with validation rules set on the warehouse, have the format occAttr:N = value when submitting a single occurrence.

The following responses may be returned:



Logged message (if enabled)



[success] => sample_id

Record submitted successfully.


Bad request

Missing or incorrect shared app secret

Incorrect appname-appsecret combination.


Bad request

User secret incorrect

User secret missing or incorrect.


Bad request

Missing or incorrect website_id

Website_id does not match that entered in the iFrom configuration.


Bad request

Missing or incorrect survey_id

Survey_id evaluates to 0 so is definitely incorrect. No check is made to ensure the survey_id is valid for the website.


User not activated

User not activated

The user is disabled in Drupal, probably because they have not followed the activation link they were emailed after registration.


Html description of error on warehouse

Description of error on warehouse

The submission failed validation by the warehouse. E.g. required values missing.

Authenticated record submission adds a requirement: the record should go along with either iRecord active session cookie, which would authenticate the user, or attaching to the record user’s usersecret along with its email.

You should keep in mind that the recording survey, website and extra recording fields might need to be set up in the iRecord’s warehouse, read more about that in setting up a survey.

Please check the recording examples.


The module will only check your app authorisation and warehouse information after which your request is proceeded to the Indicia’s warehouse where the recording data is checked.

You can also send multiple occurrences in one submission by replicating the inputs from a species checklist. The pattern for adding species is sc:grid_id-row_id::present = taxa_taxon_list_id

grid_id is simple a unique value to distinguish multiple grids on one page. row_id is a sequential number starting from 0 identifying an occurrence. taxa_taxon_list_id identifies the species.

This example submits 3 occurrences:

sc:species-0::present = 521853
sc:species-1::present = 521867
sc:species-2::present = 521879

Occurrence attributes can also be set for each occurrence using inputs with the pattern sc:grid_id-row_id::occAttr:occurrence_attribute_id = value

For example, to set an attribute with id, 230, on the three occurrences above submit the following:

sc:species-0::occAttr:230 = adult
sc:species-1::occAttr:230 = pupa
sc:species-2::occAttr:230 = larva